Condividi tramite


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 il riferimento 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

Creare un riferimento di runtime a un assembly con nome forte

Quando si crea un riferimento di runtime a un assembly con nome sicuro, ad esempio usando il Assembly.Load metodo o Assembly.GetType , è necessario usare il nome visualizzato dell'assembly con nome sicuro di 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