Share via


Procedura: firmare un assembly con un nome sicuro

Aggiornamento: novembre 2007

In Windows Software Development Kit (SDK) sono disponibili diversi modi per firmare un assembly con un nome sicuro:

  • Utilizzo dello strumento Assembly Linker (Al.exe) fornito con Windows SDK.

  • Utilizzo degli attributi dell'assembly per inserire le informazioni relative al nome sicuro nel codice. È possibile utilizzare AssemblyKeyFileAttribute o AssemblyKeyNameAttribute, a seconda della posizione del file di chiave da utilizzare.

    Nota:

    In .NET Framework versione 2.0 alcuni compilatori generano messaggi di avviso quando vengono utilizzati gli attributi.

  • Utilizzo di opzioni del compilatore, ad esempio /keyfile o /delaysign in C# e Visual Basic oppure l'opzione del linker /KEYFILE o /DELAYSIGN in C++. Per informazioni sulla firma ritardata, vedere Ritardo della firma di un assembly.

Nota:

In Visual Studio 2005 l'ambiente di sviluppo fornisce strumenti per la firma degli assembly. Vedere Gestione delle firme di assembly e manifesti e Pagina Firma, Progettazione progetti.

Per firmare un assembly con un nome sicuro, è necessario disporre di una coppia di chiavi crittografiche. Per ulteriori informazioni sulla creazione di una coppia di chiavi, vedere Procedura: creare una coppia di chiavi pubblica/privata.

Per creare e firmare un assembly con un nome sicuro utilizzando Assembly Linker

  • Al prompt dei comandi, digitare il comando seguente:

    al /out:<nome assembly> <nome modulo> /keyfile:<nome file>

    In questo comando, nome assembly corrisponde al nome dell'assembly da firmare con un nome sicuro, nome modulo rappresenta il nome del modulo di codice utilizzato per creare l'assembly e nome file corrisponde al nome del contenitore o del file contenente la coppia di chiavi.

L'esempio seguente consente di firmare l'assembly MyAssembly.dll con un nome sicuro utilizzando il file della chiave sgKey.snk.

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

Per firmare un assembly con un nome sicuro utilizzando gli attributi

  • In un modulo di codice aggiungere l'attributo AssemblyKeyFileAttribute o AssemblyKeyNameAttribute, specificando il nome del file o del contenitore contenente la coppia di chiavi da utilizzare durante la firma dell'assembly con un nome sicuro.

Nell'esempio di codice riportato di seguito viene utilizzato AssemblyKeyFileAttribute con un file della chiave denominato sgKey.snk, che si trova nella directory in cui viene compilato l'assembly. Si presuppone che l'assembly venga compilato mediante i compilatori da riga di comando vbc.exe e csc.exe.

<Assembly:AssemblyKeyFileAttribute("sgKey.snk")>
[assembly:AssemblyKeyFileAttribute(@"sgKey.snk")]
Nota:

Negli ambienti di sviluppo come Visual Studio è possibile che l'assembly non venga compilato nella directory del progetto. In alcune versioni di Visual Studio, ad esempio, i progetti C# vengono compilati nella sottodirectory bin\Debug. In tal caso, il percorso nell'esempio di codice sarebbe "..\\..\\sgKey.snk". In Visual Studio 2005 il file di chiave per C# può essere specificato nelle impostazioni del progetto.

È inoltre possibile ritardare la firma di un assembly durante la compilazione. Per ulteriori informazioni, vedere Ritardo della firma di un assembly.

Quando firma un assembly con un nome sicuro, Assembly Linker (Al.exe) cerca il file della chiave relativo alla directory corrente e alla directory di output. Se si utilizzano i compilatori della riga di comando, è sufficiente copiare la chiave nella directory corrente contenente i moduli di codice.

Vedere anche

Attività

Procedura: creare una coppia di chiavi pubblica/privata

Concetti

Ritardo della firma di un assembly

Riferimenti

Pagina Firma, Progettazione progetti

Altre risorse

Creazione e utilizzo degli assembly con nome sicuro

Gestione delle firme di assembly e manifesti