Share via


Procedure: Een assembly ondertekenen met een sterke naam

Notitie

Hoewel .NET Core ondersteuning biedt voor sterk benoemde assembly's en alle assembly's in de .NET Core-bibliotheek zijn ondertekend, hebben de meeste assembly's van derden geen sterke namen nodig. Zie Strong Name Signing op GitHub voor meer informatie.

Er zijn verschillende manieren om een assembly te ondertekenen met een sterke naam:

  • Door de naamgevingspagina Build>Strong te gebruiken in de projectontwerper voor een project in Visual Studio. Dit is de eenvoudigste en handigste manier om een assembly met een sterke naam te ondertekenen.
  • Door de Assembly Linker (Al.exe) te gebruiken om een .NET Framework-codemodule (een .netmodule-bestand ) te koppelen aan een sleutelbestand.
  • Door assemblykenmerken te gebruiken om de sterke naaminformatie in uw code in te voegen. U kunt het kenmerk of het AssemblyKeyFileAttribute AssemblyKeyNameAttribute kenmerk gebruiken, afhankelijk van waar het sleutelbestand zich bevindt.
  • Met behulp van compileropties.

U moet een cryptografisch sleutelpaar hebben om een assembly te ondertekenen met een sterke naam. Zie Instructies voor het maken van een sleutelpaar voor meer informatie over het maken van een sleutelpaar : Een openbaar-persoonlijk sleutelpaar maken.

Een assembly met een sterke naam maken en ondertekenen met behulp van Visual Studio

  1. Open in Solution Explorer het snelmenu voor het project en kies Eigenschappen.
  2. Op het tabblad Opbouwen vindt u een sterk naamgevingsknooppunt .
  3. Schakel het selectievakje Assembly ondertekenen in, waarmee de opties worden uitgebreid.
  4. Selecteer de knop Bladeren om een pad naar het sleutelbestand Sterke naam te kiezen.

Notitie

Als u het ondertekenen van een assembly wilt vertragen, kiest u een bestand met een openbare sleutel.

Visual Studio 2022: Projecteigenschappen, sectie Build/Strong naamgeving.

Een assembly met een sterke naam maken en ondertekenen met behulp van de Assembly Linker

Open de Visual Studio Developer-opdrachtprompt of Visual Studio Developer PowerShell en voer de volgende opdracht in:

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

Hierin:

  • assemblyName is de naam van de sterk ondertekende assembly (een .dll - of .exe-bestand ) die Assembly Linker verzendt.
  • moduleName is de naam van een .NET Framework-codemodule (een .netmodule-bestand ) met een of meer typen. U kunt een .netmodule-bestand maken door uw code te compileren met de /target:module switch in C# of Visual Basic.
  • keyfileName is de naam van de container of het bestand dat het sleutelpaar bevat. Assembly Linker interpreteert een relatief pad ten opzichte van de huidige map.

In het volgende voorbeeld wordt de assembly MyAssembly.dll met een sterke naam ondertekend met behulp van het sleutelbestand sgKey.snk.

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

Zie Assembly Linker voor meer informatie over dit hulpprogramma.

Een assembly ondertekenen met een sterke naam met behulp van kenmerken

  1. Voeg het System.Reflection.AssemblyKeyFileAttribute of AssemblyKeyNameAttribute kenmerk toe aan uw broncodebestand en geef de naam op van het bestand of de container die het sleutelpaar bevat dat moet worden gebruikt bij het ondertekenen van de assembly met een sterke naam.

  2. Compileer het broncodebestand normaal.

    Notitie

    De C#- en Visual Basic-compilers geven compilerwaarschuwingen (respectievelijk CS1699 en BC41008) uit wanneer ze het AssemblyKeyFileAttribute of AssemblyKeyNameAttribute kenmerk in broncode tegenkomen. U kunt de waarschuwingen negeren.

In het volgende voorbeeld wordt het kenmerk gebruikt met een sleutelbestand met de AssemblyKeyFileAttribute naam keyfile.snk, dat zich in de map bevindt waar de assembly wordt gecompileerd.

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

U kunt ook het ondertekenen van een assembly vertragen bij het compileren van uw bronbestand. Zie Delay-sign an assembly voor meer informatie.

Een assembly ondertekenen met een sterke naam met behulp van de compiler

Compileer uw broncodebestand of bestanden met de /keyfile optie of /delaysign compiler in C# en Visual Basic, of de /KEYFILE linkeroptie /DELAYSIGN in C++. Voeg na de optienaam een dubbele punt en de naam van het sleutelbestand toe. Wanneer u opdrachtregelcompilers gebruikt, kunt u het sleutelbestand kopiƫren naar de map die uw broncodebestanden bevat.

Zie Delay-sign an assembly voor meer informatie over het uitstellen van ondertekening.

In het volgende voorbeeld wordt de C#-compiler gebruikt en wordt de assembly-UtilityLibrary.dll met een sterke naam ondertekend met behulp van het sleutelbestand sgKey.snk.

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

Zie ook