Instrukcje: podpisywanie zestawu przy użyciu silnej nazwy
Uwaga
Mimo że platforma .NET Core obsługuje zestawy o silnych nazwach, a wszystkie zestawy w bibliotece .NET Core są podpisane, większość zestawów innych firm nie potrzebuje silnych nazw. Aby uzyskać więcej informacji, zobacz Strong Name Signing on GitHub (Podpisywanie silnej nazwy w usłudze GitHub).
Istnieje kilka metod podpisywania zestawu za pomocą silnej nazwy:
- Za pomocą strony Tworzenie>silnego nazewnictwa w projektancie projektu dla projektu w programie Visual Studio. Jest to najprostsza i najwygodniejsza metoda podpisywania zestawów za pomocą silnych nazw.
- Używając konsolidatora zestawów (Al.exe), aby połączyć moduł kodu programu .NET Framework ( plik .netmodule ) z plikiem klucza.
- Przy użyciu atrybutów zestawu w celu wstawienia informacji o silnej nazwie do kodu. Można użyć atrybutu AssemblyKeyFileAttribute AssemblyKeyNameAttribute lub , w zależności od tego, gdzie znajduje się 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 How to: Create a public-private key pair (Instrukcje: tworzenie pary kluczy publicznych-prywatnych).
Tworzenie i podpisywanie zestawu przy użyciu silnej nazwy przy użyciu programu Visual Studio
- W Eksplorator rozwiązań otwórz menu skrótów dla projektu, a następnie wybierz pozycję Właściwości.
- Na karcie Kompilacja znajdziesz węzeł Silne nazewnictwo.
- Zaznacz pole wyboru Podpisz zestaw, co powoduje rozwinięcie opcji.
- Wybierz przycisk Przeglądaj, aby wybrać ścieżkę pliku silnej nazwy klucza.
Uwaga
Aby opóźnić podpisywanie zestawu, wybierz plik klucza publicznego.
Tworzenie i podpisywanie zestawu przy użyciu silnej nazwy przy użyciu konsolidatora zestawów
Otwórz wiersz polecenia dla deweloperów programu Visual Studio lub program Visual Studio Developer PowerShell i wprowadź następujące polecenie:
al /out:<assemblyName moduleName>>< /keyfile:<keyfileName >
Gdzie:
- assemblyName to nazwa silnie podpisanego zestawu ( plik .dll lub .exe ), który będzie emitować konsolidator zestawów.
- moduleName to nazwa modułu kodu .NET Framework ( pliku .netmodule ), który zawiera co najmniej jeden typ. Plik .netmodule można utworzyć, kompilując kod za pomocą przełącznika
/target:module
w języku C# lub Visual Basic. - keyfileName to nazwa kontenera lub pliku zawierającego parę kluczy. Konsolidator zestawów interpretuje ścieżkę względną w odniesieniu do bieżącego katalogu.
Poniższy przykład podpisuje MyAssembly.dll zestawu z 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 Konsolidator zestawów.
Podpisywanie zestawu przy użyciu silnej nazwy przy użyciu atrybutów
System.Reflection.AssemblyKeyFileAttribute Dodaj atrybut or AssemblyKeyNameAttribute do pliku kodu źródłowego i określ nazwę pliku lub kontenera, który zawiera parę kluczy do użycia podczas podpisywania zestawu za pomocą silnej nazwy.
Skompiluj w normalny sposób plik kodu źródłowego.
Uwaga
Kompilatory języka C# i Visual Basic wydają odpowiednio ostrzeżenia kompilatora (CS1699 i BC41008), gdy napotkają AssemblyKeyFileAttribute atrybut lub AssemblyKeyNameAttribute w kodzie źródłowym. Można zignorować te ostrzeżenia.
W poniższym przykładzie użyto atrybutu AssemblyKeyFileAttribute z plikiem klucza o nazwie keyfile.snk, który znajduje się w katalogu, w którym zestaw jest kompilowany.
[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 (Opóźnienie podpisywania zestawu).
Podpisywanie zestawu przy użyciu silnej nazwy przy użyciu kompilatora
Skompiluj plik lub pliki kodu źródłowego /keyfile
za pomocą opcji lub /delaysign
kompilatora w języku C# i Visual Basic albo opcji konsolidatora /KEYFILE
lub /DELAYSIGN
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 opóźniania podpisywania, zobacz Delay-sign an assembly (Opóźnienie podpisywania zestawu).
W poniższym przykładzie użyto kompilatora języka C# i podpisze zestaw UtilityLibrary.dll z silną nazwą przy użyciu pliku klucza sgKey.snk.
csc /t:library UtilityLibrary.cs /keyfile:sgKey.snk
Zobacz też
- Tworzenie i używanie zestawów o silnych nazwach
- Instrukcje: tworzenie pary kluczy publiczny-prywatny
- Al.exe (konsolidator zestawów)
- Opóźnianie podpisywania zestawu
- Interfejsy API o silnej nazwie zgłaszają wyjątek PlatformNotSupportedException
- Zarządzanie podpisywaniem zestawu i manifestu
- Strona podpisywania, Projektant projektu