Dela via


Gör så här: Skapa ett offentligt-privat nyckelpar

Om du vill signera en sammansättning med ett starkt namn måste du ha ett offentligt/privat nyckelpar. Det här offentliga och privata kryptografiska nyckelparet används under kompilering för att skapa en stark namngiven sammansättning. Du kan skapa ett nyckelpar med hjälp av verktyget Starkt namn (Sn.exe). Nyckelparfiler har vanligtvis ett .snk-tillägg .

Kommentar

I Visual Studio innehåller projektegenskapssidorna C# och Visual Basic en signeringsflik där du kan välja befintliga nyckelfiler eller generera nya nyckelfiler utan att använda Sn.exe. I Visual C++kan du ange platsen för en befintlig nyckelfil på sidan Avancerad egenskap i avsnittet Länkare i avsnittet Konfigurationsegenskaper i fönstret Egenskapssidor. Användningen av AssemblyKeyFileAttribute attributet för att identifiera nyckelfilpar blev föråldrad från och med Visual Studio 2005.

Skapa ett nyckelpar

Om du vill skapa ett nyckelpar skriver du följande kommando i en kommandotolk:

sn – k<filnamn>

I det här kommandot är filnamnet namnet på utdatafilen som innehåller nyckelparet.

I följande exempel skapas ett nyckelpar med namnet sgKey.snk.

sn -k sgKey.snk

Om du tänker fördröja tecknet på en sammansättning och du styr hela nyckelparet (vilket är osannolikt utanför testscenarier) kan du använda följande kommandon för att generera ett nyckelpar och sedan extrahera den offentliga nyckeln från den till en separat fil. Skapa först nyckelparet:

sn -k keypair.snk

Extrahera sedan den offentliga nyckeln från nyckelparet och kopiera den till en separat fil:

sn -p keypair.snk public.snk

När du har skapat nyckelparet måste du placera filen där verktygen för stark namnsignering kan hitta den.

När du signerar en sammansättning med ett starkt namn letar Assembly Linker (Al.exe) efter nyckelfilen i förhållande till den aktuella katalogen och till utdatakatalogen. När du använder kommandoradskompilerare kan du helt enkelt kopiera nyckeln till den aktuella katalogen som innehåller dina kodmoduler.

Om du använder en tidigare version av Visual Studio som inte har någon signeringsflik i projektegenskaperna är den rekommenderade platsen för nyckelfilen projektkatalogen med filattributet angivet på följande sätt:

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

Se även