Procedura: aggiungere un riferimento 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.
![]() |
---|
Un assembly con nome sicuro può utilizzare solo tipi di altri assembly con nome sicuro.In caso contrario, la sicurezza 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 seguente comando:
<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 librerie.
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 utilizza il metodo 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>
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, utilizzare Culture=neutral.
Nell'esempio di codice seguente viene illustrato come utilizzare queste informazioni con il metodo Assembly.Load.
Dim myDll As Assembly = _
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");
Assembly^ myDll =
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 comando di Sn.exe (Nome sicuro) seguente:
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>