Procedura: Aggiungere un riferimento a un assembly con nome sicuroHow to: Reference a Strong-Named Assembly

Il processo per la creazione di riferimenti a tipi o risorse in un assembly con nome sicuro è solitamente trasparente all'utente.The process for referencing types or resources in a strong-named assembly is usually transparent. È possibile creare i riferimenti in fase di compilazione (associazione anticipata) o in fase di esecuzione.You can make the reference either at compile time (early binding) or at run time.

Un riferimento in fase di compilazione viene creato quando si indica al compilatore che l'assembly contiene riferimenti espliciti a un altro assembly.A compile-time reference occurs when you indicate to the compiler that your assembly explicitly references another assembly. Quando si usano i riferimenti in fase di compilazione, il compilatore riceve automaticamente la chiave pubblica dell'assembly con nome sicuro di destinazione e inserisce la chiave nel riferimento dell'assembly in fase di compilazione.When you use compile-time referencing, the compiler automatically gets the public key of the targeted strong-named assembly and places it in the assembly reference of the assembly being compiled.

Nota

Gli assembly con nome sicuro possono usare solo tipi da altri assembly con nome sicuro.A strong-named assembly can only use types from other strong-named assemblies. In caso contrario, la sicurezza dell'assembly con nome sicuro risulterebbe compromessa.Otherwise, the security of the strong-named assembly would be compromised.

Per creare un riferimento in fase di compilazione a un assembly con nome sicuroTo make a compile-time reference to a strong-named assembly

  1. Al prompt dei comandi digitare il seguente comando:At the command prompt, type the following command:

    <comando compilatore> /reference:<nome assembly><compiler command> /reference:<assembly name>

    In questo comando comando compilatore è il comando del compilatore per il linguaggio usato e nome assembly è il nome dell'assembly con nome sicuro a cui viene fatto riferimento.In this command, compiler command is the compiler command for the language you are using, and assembly name is the name of the strong-named assembly being referenced. È possibile usare anche altre opzioni del compilatore, ad esempio l'opzione /t:library per la creazione di un assembly di librerie.You can also use other compiler options, such as the /t:library option for creating a library assembly.

L'esempio seguente crea un assembly denominato myAssembly.dll che fa riferimento a un assembly con nome sicuro denominato myLibAssembly.dll da un modulo di codice denominato myAssembly.cs.The following example creates an assembly called myAssembly.dll that references a strong-named assembly called myLibAssembly.dll from a code module called myAssembly.cs.

csc /t:library myAssembly.cs /reference:myLibAssembly.dll  

Per creare un riferimento in fase di esecuzione a un assembly con nome sicuroTo make a run-time reference to a strong-named assembly

  1. Quando si crea un riferimento in fase di esecuzione a un assembly con nome sicuro, ad esempio usando il metodo Assembly.Load o Assembly.GetType, è necessario usare il nome visualizzato dell'assembly con nome sicuro a cui viene fatto riferimento.When you make a run-time reference to a strong-named assembly (for example, by using the Assembly.Load or Assembly.GetType method), you must use the display name of the referenced strong-named assembly. La sintassi di un nome visualizzato è la seguente:The syntax of a display name is as follows:

    <nome assembly>, <numero versione>, <cultura>, <token chiave pubblica><assembly name>, <version number>, <culture>, <public key token>

    Ad esempio:For example:

    myDll, Version=1.1.0.0, Culture=en, PublicKeyToken=03689116d3a4ae33   
    

    In questo esempio PublicKeyToken è il token di chiave pubblica in formato esadecimale.In this example, PublicKeyToken is the hexadecimal form of the public key token. Se non è presente alcun valore relativo alle impostazioni cultura, usare Culture=neutral.If there is no culture value, use Culture=neutral.

L'esempio di codice seguente illustra come usare queste informazioni con il metodo Assembly.Load.The following code example shows how to use this information with the Assembly.Load method.

Assembly^ myDll =
    Assembly::Load("myDll, Version=1.0.0.1, Culture=neutral, PublicKeyToken=9b35aa32c18d4fb1");
Assembly myDll =
    Assembly.Load("myDll, Version=1.0.0.1, Culture=neutral, PublicKeyToken=9b35aa32c18d4fb1");
Dim myDll As Assembly = _
    Assembly.Load("myDll, Version=1.0.0.1, Culture=neutral, PublicKeyToken=9b35aa32c18d4fb1")

È possibile stampare il formato esadecimale della chiave pubblica e del token di chiave pubblica per un assembly specifico usando il comando Nome sicuro (Sn.exe) seguente:You can print the hexadecimal format of the public key and public key token for a specific assembly by using the following Strong Name (Sn.exe) command:

sn -Tp < assembly >sn -Tp < assembly >

Se è presente un file di chiave pubblica, è possibile usare il comando seguente (si noti la differenza tra maiuscole e minuscole nell'opzione della riga di comando):If you have a public key file, you can use the following command instead (note the difference in case on the command-line option):

sn -tp < file di chiave pubblica >sn -tp < public key file >

Vedere ancheSee also