Procedura: aggiungere un riferimento a un assembly con nome sicuro
Aggiornamento: novembre 2007
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: |
---|
Un assembly con nome sicuro può utilizzare solo tipi di altri assembly con nome sicuro. In caso contrario, la protezione dell'assembly con nome sicuro risulterebbe compromessa. |
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 in fase di esecuzione a un assembly con nome sicuro
- Quando si crea un riferimento in fase di esecuzione a un assembly con nome sicuro, 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>, <impostazioni cultura>, <token chiave pubblica>
Di seguito è riportato un esempio:
myDll, Version=1.1.0.0, Culture=en, PublicKeyToken=03689116d3a4ae33
In questo esempio PublicKeyToken corrisponde al token di chiave pubblica in formato esadecimale. Se non è presente alcun valore relativo alle impostazioni cultura, 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")
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 dello strumento Nome sicuro (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 <assembly>