Dela via


Hantera kompilering och manifestsignering

Stark namnsignering ger en programvarukomponent en globalt unik identitet. Starka namn används för att garantera att sammansättningen inte kan förfalskas av någon annan och för att se till att komponentberoenden och konfigurationssatser mappas till rätt komponent- och komponentversion.

Ett starkt namn består av sammansättningens identitet (enkelt textnamn, versionsnummer och kulturinformation), plus en offentlig nyckeltoken och en digital signatur.

Information om signeringssammansättningar i Visual Basic- och C#-projekt finns i Skapa och använda starka namngivna sammansättningar.

Information om signeringssammansättningar i C++-projekt finns i Starka namngivna sammansättningar (C++/CLI).

Anmärkning

Signering med starka namn skyddar inte mot omvänd konstruktion av sammansättningen. Information om hur du skyddar mot omvänd teknik finns i Dotfuscator Community.

Tillgångstyper och signering

Du kan signera .NET-sammansättningar och programmanifest:

  • Körbara filer (.exe)

  • Programmanifest (.exe.manifest)

  • Distributionsmanifest (.application)

  • Delade komponentsammansättningar (.dll)

Signera följande typer av tillgångar:

  1. Assemblies, om du vill distribuera dem till det globala assemblycache (GAC).

  2. ClickOnce-program- och distributionsmanifest. Visual Studio möjliggör signering som standard för dessa program.

  3. Primära interop-sammansättningar, som används för COM-samverkan. TLBIMP-verktyget framtvingar stark namngivning när du skapar en primär interop-sammansättning från ett COM-typbibliotek.

I allmänhet bör du inte signera körbara filer. En starkt namngiven komponent kan inte referera till en icke-starkt namngiven komponent som distribueras med programmet. Visual Studio signerar inte körbara program, utan signerar i stället programmanifestet, som pekar på den svaga namngivna körbara filen. Undvik att signera komponenter som är privata för ditt program, eftersom signering kan göra det svårare att hantera beroenden.

Så här signerar du en sammansättning i Visual Studio

Proceduren för att signera en sammansättning beror på vilken version av projektdesignern som projektet använder.

För C#-projekt i .NET Core (och .NET 5 och senare) i Visual Studio 2022:

  1. Öppna fönstret projektegenskaper (högerklicka på projektnoden i Solution Explorer och välj Egenskaper).
  2. Under Skapa letar du efter Stark namngivning och markerar kryssrutan Signera sammansättningen . Ytterligare alternativ för nyckelfilen och fördröjningssignering visas när du markerar kryssrutan.
  3. Ange en nyckelfil.

Om du inte har någon nyckelfil kan du använda kommandoraden för att skapa en .snk fil. Du kan också använda eller generera ett certifikat i en .pfx fil med hjälp av publiceringsprocessen, och i steget signera manifest kan du skapa ett testcertifikat som endast ska användas under utveckling och testning, eller för produktion, använda ett certifikat som utfärdats av IT-avdelningen eller av en behörig källa. Läs om Distribuera en .NET Windows-skrivbordsapp med ClickOnce.

För .NET Framework- och Visual Basic-projekt i Visual Studio 2022 eller i Visual Studio 2019:

  1. Öppna fliken Signering i fönstret projektegenskaper (högerklicka på projektnoden i Solution Explorer och välj Egenskaper). Välj fliken signering.
  2. Markera kryssrutan Signera sammansättningen .
  3. Ange en nyckelfil. Om du väljer att skapa en ny nyckelfil skapas alltid nya nyckelfiler i pfx-format . Du behöver ett namn och lösenord för den nya filen.

Varning

Du bör alltid skydda din nyckelfil med ett lösenord för att förhindra att någon annan använder den. Du kan också skydda dina nycklar med hjälp av leverantörer eller certifikatarkiv.

Du kan också peka på en nyckel som du redan har skapat. Mer information om hur du skapar nycklar finns i Skapa ett offentligt-privat nyckelpar.

Om du bara har åtkomst till en offentlig nyckel kan du använda fördröjningssignering för att skjuta upp tilldelningen av nyckeln. Du aktiverar fördröjningssignering genom att markera kryssrutan Endast fördröjningssignering. Ett fördröjningssignerat projekt körs inte och du kan inte felsöka det. Du kan dock hoppa över verifieringen under utvecklingen med hjälp av verktygetSn.exe starkt namn med alternativet -Vr .