Creazione di riferimenti a un assembly con nome sicuro

Il processo per la creazione di riferimenti a tipi o risorse di un assembly con nome sicuro è solitamente trasparente all'utente. È possibile creare tali riferimenti in fase di compilazione (associazione anticipata) o in fase di esecuzione.

Un riferimento in fase di compilazione viene creato quando si indica al compilatore che l'assembly contiene riferimenti espliciti a un altro assembly. Quando si utilizzano i riferimenti in fase di compilazione, il compilatore riceve automaticamente la chiave pubblica dell'assembly con nome sicuro a cui si fa riferimento e tale chiave viene posizionata nel riferimento di assembly dell'assembly in fase di compilazione.

Nota   Tutti gli assembly che fanno riferimento a tipi contenuti in un assembly con nome sicuro devono a loro volta disporre di un nome sicuro.

Per creare un riferimento in fase di compilazione a un assembly con nome sicuro

  • Al prompt dei comandi, digitare il comando seguente:

    <comando compilatore> /reference:<nome assembly>

    In questo comando, comando compilatore corrisponde al comando del compilatore per il linguaggio utilizzato e nome assembly rappresenta il nome dell'assembly con nome sicuro a cui si fa riferimento. È possibile utilizzare anche altre opzioni del compilatore, ad esempio l'opzione /t:library per la creazione di un assembly di libreria.

L'esempio seguente consente di creare 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.

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

Per creare un riferimento di assembly in fase di esecuzione, ad esempio quando si utilizzano i metodi Assembly.Load o Assembly.GetType, è necessario utilizzare il nome visualizzato dell'assembly con nome sicuro a cui si fa riferimento. La sintassi di un nome visualizzato è la seguente:

<nome assembly>, <numero versione>, <lingua>, <nome sicuro>

Esempio:

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

In questo esempio PublicKeyToken corrisponde al token di chiave pubblica in rappresentazione esadecimale. Se non è presente alcun valore relativo alla lingua, specificare Culture=neutral.

Nell'esempio seguente viene mostrato come utilizzare queste informazioni con il metodo Assembly.Load.

Assembly.Load("myDll,Version=1.0.0.1,Culture=neutral,PublicKeyToken=9b35aa32c18d4fb1")
[C#]
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 utilizzando il seguente comando di strumento Strong Name (Sn.exe):

sn -Tp <assembly>

Se si dispone di un file di chiave pubblica, è possibile utilizzare il seguente comando (si noti la differenza tra maiuscole e minuscole nell'opzione della riga di comando):

sn -tp

Vedere anche

Creazione e utilizzo degli assembly con nome sicuro