Postupy: Podepsání sestavení silným názvem

Poznámka:

I když .NET Core podporuje sestavení se silným názvem a všechna sestavení v knihovně .NET Core jsou podepsaná, většina sestavení třetích stran nepotřebuje silné názvy. Další informace najdete v tématu Podepisování silného názvu na GitHubu.

Existuje několik způsobů, jak můžete podepsat sestavení pomocí silného názvu:

  • Pomocí stránky sestavení>silného pojmenování v návrháři projektu pro projekt v sadě Visual Studio. Nejjednodušším a nejpohodlnějším způsobem je podepsání sestavení pomocí silného názvu.
  • Pomocí linkeru sestavení (Al.exe) propojte modul kódu rozhraní .NET Framework ( soubor .netmodule ) se souborem klíče.
  • Pomocí atributů sestavení pro vložení informací o silném názvu do kódu. Můžete použít buď atribut AssemblyKeyFileAttribute , nebo AssemblyKeyNameAttribute v závislosti na tom, kde se nachází soubor klíče, který se má použít.
  • Pomocí možností kompilátoru.

Pro podepsání sestavení silným názvem musíte mít pár kryptografických klíčů. Další informace o vytvoření páru klíčů najdete v tématu Postupy: Vytvoření páru veřejného a privátního klíče.

Vytvoření a podepsání sestavení silným názvem pomocí sady Visual Studio

  1. V Průzkumník řešení otevřete místní nabídku projektu a pak zvolte Vlastnosti.
  2. Na kartě Sestavení najdete uzel silného pojmenování.
  3. Zaškrtněte políčko Podepsat sestavení, které rozbalí možnosti.
  4. Vyberte tlačítko Procházet a zvolte cestu k souboru klíče silného názvu.

Poznámka:

Pokud chcete zpozdit podepsání sestavení, zvolte soubor veřejného klíče.

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

Vytvoření a podepsání sestavení silným názvem pomocí linkeru sestavení

Otevřete Visual Studio Developer Command Prompt nebo Visual Studio Developer PowerShell a zadejte následující příkaz:

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

Kde:

  • AssemblyName je název sestavení se silným podpisem ( soubor .dll nebo .exe ), který bude generovat Linker sestavení.
  • moduleName je název modulu kódu rozhraní .NET Framework ( soubor .netmodule ), který obsahuje jeden nebo více typů. Soubor .netmodule můžete vytvořit kompilováním kódu pomocí /target:module přepínače v jazyce C# nebo Visual Basic.
  • keyfileName je název kontejneru nebo souboru, který obsahuje dvojici klíčů. Linker sestavení interpretuje relativní cestu vzhledem k aktuálnímu adresáři.

Následující příklad podepíše sestavení MyAssembly.dll silným názvem pomocí souboru klíče sgKey.snk.

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

Další informace o tomto nástroji naleznete v tématu Assembly Linker.

Podepsání sestavení silným názvem pomocí atributů

  1. System.Reflection.AssemblyKeyFileAttribute Přidejte do souboru zdrojového kódu nebo AssemblyKeyNameAttribute atribut a zadejte název souboru nebo kontejneru, který obsahuje pár klíčů, který se má použít při podepisování sestavení silným názvem.

  2. Zkompilujte soubor zdrojového kódu běžným způsobem.

    Poznámka:

    Kompilátory jazyka C# a Visual Basic vydávají upozornění kompilátoru (CS1699 a BC41008) při výskytu AssemblyKeyFileAttribute nebo AssemblyKeyNameAttribute atributu ve zdrojovém kódu. Upozornění můžete ignorovat.

Následující příklad používá AssemblyKeyFileAttribute atribut se souborem klíče s názvem keyfile.snk, který se nachází v adresáři, kde je sestavení zkompilováno.

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

Při kompilaci zdrojového souboru můžete také podepsání sestavení pozdržet. Další informace naleznete v tématu Zpoždění podepsání sestavení.

Podepsání sestavení silným názvem pomocí kompilátoru

Zkompilujte soubor zdrojového kódu nebo soubory s možností kompilátoru /keyfile/delaysign v jazyce C# a Visual Basic nebo možnost linkeru /KEYFILE/DELAYSIGN v jazyce C++. Za název možnosti přidejte dvojtečku a název souboru s klíčem. Při použití kompilátorů příkazového řádku můžete jednoduše zkopírovat soubor klíče do aktuálního adresáře, který obsahuje soubory zdrojového kódu.

Informace o zpoždění podepisování naleznete v tématu Zpoždění podepsání sestavení.

Následující příklad používá kompilátor jazyka C# a podepíše sestavení UtilityLibrary.dll silným názvem pomocí souboru klíče sgKey.snk.

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

Viz také