Jak podpisać zestaw za pomocą silnej nazwy

Uwaga

Mimo że program .NET Core obsługuje zestawy o silnych nazwach i wszystkie zestawy w bibliotece .NET Core są podpisane, większość zestawów innych firm nie potrzebuje silnych nazw. Aby uzyskać więcej informacji, zobacz Podpisywanie silnych nazw na GitHub.

Istnieje kilka metod podpisywania zestawu za pomocą silnej nazwy:

  • Przy użyciu karty Podpisywanie w oknie dialogowym Właściwości projektu w Visual Studio. Jest to najprostsza i najwygodniejsza metoda podpisywania zestawów za pomocą silnych nazw.

  • Za pomocą programu Assembly Linker (Al.exe) połącz moduł kodu .NET Framework (plik .netmodule) z plikiem klucza.

  • Przy użyciu atrybutów zestawu w celu wstawienia informacji o silnej nazwie do kodu. Możesz użyć atrybutu lub , w zależności od tego, gdzie znajduje się AssemblyKeyFileAttribute AssemblyKeyNameAttribute plik klucza do użycia.

  • Przy użyciu opcji kompilatora.

Aby podpisać zestaw za pomocą silnej nazwy, trzeba mieć parę kluczy kryptograficznych. Aby uzyskać więcej informacji na temat tworzenia pary kluczy, zobacz Jak utworzyć parę kluczy publiczny-prywatny.

Tworzenie i podpisywanie zestawu silną nazwą przy użyciu Visual Studio

  1. W Eksplorator rozwiązań otwórz menu skrótów dla projektu, a następnie wybierz pozycję Właściwości.

  2. Wybierz kartę Podpisywanie.

  3. Wybierz pole Podpisz zestaw.

  4. W polu Wybierz plik klucza silnej nazwy wybierz pozycję Przeglądaj, a następnie przejdź do pliku klucza. Aby utworzyć nowy plik klucza, wybierz pozycję Nowy i wprowadź jego nazwę w oknie dialogowym Tworzenie klucza silnej nazwy.

Uwaga

Aby opóźnić podpisywanie zestawu, wybierz plik klucza publicznego.

Tworzenie i podpisywanie zestawu za pomocą silnej nazwy przy użyciu programu Assembly Linker

Otwórz Visual Studio wiersz polecenia dla deweloperów lub Visual Studio Developer PowerShelli wprowadź następujące polecenie:

al /out: <assemblyName> <moduleName> /keyfile:<keyfileName>

Gdzie:

  • assemblyName to nazwa zestawu z podpisem silnie podpisanym (plik .dll lub .exe), który będzie emitować program Assembly Linker.

  • moduleName to nazwa modułu .NET Framework kodu (pliku .netmodule), który zawiera co najmniej jeden typ. Plik .netmodule można utworzyć, kompilując kod za pomocą przełącznika w /target:module języku C# lub Visual Basic.

  • keyfileName to nazwa kontenera lub pliku zawierającego parę kluczy. Program Assembly Linker interpretuje ścieżkę względną w odniesieniu do bieżącego katalogu.

Poniższy przykład podpisuje zestaw MyAssembly.dll silną nazwą przy użyciu pliku klucza sgKey.snk.

al /out:MyAssembly.dll MyModule.netmodule /keyfile:sgKey.snk  

Aby uzyskać więcej informacji na temat tego narzędzia, zobacz Assembly Linker.

Podpisywanie zestawu silną nazwą przy użyciu atrybutów

  1. Dodaj atrybut lub do pliku kodu źródłowego i określ nazwę pliku lub kontenera zawierającego parę kluczy do użycia podczas podpisywania zestawu System.Reflection.AssemblyKeyFileAttribute AssemblyKeyNameAttribute silną nazwą.

  2. Skompiluj w normalny sposób plik kodu źródłowego.

    Uwaga

    Kompilatory języka C# i Visual Basic wystawiają ostrzeżenia kompilatora (odpowiednio CS1699 i BC41008), gdy napotkają atrybut lub w AssemblyKeyFileAttribute AssemblyKeyNameAttribute kodzie źródłowym. Można zignorować te ostrzeżenia.

W poniższym przykładzie AssemblyKeyFileAttribute użyto atrybutu z plikiem klucza o nazwie keyfile.snk, który znajduje się w katalogu, w którym jest kompilowany zestaw.

[assembly:AssemblyKeyFileAttribute("keyfile.snk")];
[assembly:AssemblyKeyFileAttribute("keyfile.snk")]
<Assembly:AssemblyKeyFileAttribute("keyfile.snk")>

Można również opóźnić podpisywanie zestawu podczas kompilowania pliku źródłowego. Aby uzyskać więcej informacji, zobacz Delay-sign an assembly (Podpisywanie zestawu z opóźnieniem).

Podpisywanie zestawu silną nazwą przy użyciu kompilatora

Skompiluj plik kodu źródłowego lub pliki za pomocą opcji kompilatora lub w języku C# i Visual Basic lub opcji /keyfile /delaysign lub /KEYFILE /DELAYSIGN linkera w języku C++. Po nazwie opcji dodaj średnik, a następnie nazwę pliku klucza. W przypadku używania kompilatorów wiersza polecenia można skopiować plik klucza do katalogu, który zawiera pliki kodu źródłowego.

Aby uzyskać informacje na temat podpisywania opóźnień, zobacz Delay-sign an assembly.

W poniższym przykładzie użyto kompilatora języka C# iUtilityLibrary.dll zestawu silną nazwą przy użyciu pliku klucza sgKey.snk.

csc /t:library UtilityLibrary.cs /keyfile:sgKey.snk  

Zobacz też