Procedura: Fare riferimento a un assembly con nome sicuro

Il processo per la creazione di riferimenti a tipi o risorse in un assembly con nome sicuro è solitamente trasparente all'utente. È possibile creare i 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 da compilare contiene riferimenti espliciti a un altro 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.

Nota

Gli assembly con nome sicuro possono usare solo tipi da altri assembly con nome sicuro. In caso contrario, la sicurezza dell'assembly con nome sicuro risulterebbe compromessa.

Fare 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 è il comando del compilatore per il linguaggio usato e nome assembly è il nome dell'assembly con nome sicuro a cui viene fatto riferimento. È possibile usare anche altre opzioni del compilatore, ad esempio l'opzione /t:library per la creazione di un assembly di librerie.

Nell'esempio seguente viene creato 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  

Fare riferimento in fase di esecuzione a un assembly con nome sicuro

Quando si fa 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. La sintassi di un nome visualizzato è la seguente:

<nome assembly>,<numero versione>,<cultura>,<token chiave pubblica>

Ad esempio:

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

In questo esempio PublicKeyToken è il token di chiave pubblica in formato esadecimale. Se non è presente alcun valore relativo alle impostazioni cultura, usare Culture=neutral.

L'esempio di codice seguente illustra come usare queste informazioni con il metodo Assembly.Load.

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:

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):

sn -tp <file di chiave pubblica>

Vedi anche