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 AssemblyKeyFileAttributeAssemblyKeyNameAttribute 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

  1. W Eksplorator rozwiązań otwórz menu skrótów dla projektu, a następnie wybierz pozycję Właściwości.
  2. Na karcie Kompilacja znajdziesz węzeł Silne nazewnictwo.
  3. Zaznacz pole wyboru Podpisz zestaw, co powoduje rozwinięcie opcji.
  4. Wybierz przycisk Przeglądaj, aby wybrać ścieżkę pliku silnej nazwy klucza.

Uwaga

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

Visual Studio 2022: Project properties, Build / Strong naming section.

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

  1. 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.

  2. 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ż