Procedura: creare assembly Friend firmati
Aggiornamento: novembre 2007
In questo esempio è indicato come utilizzare assembly Friend con assembly che hanno nomi sicuri. Entrambi gli assembly devono avere nomi sicuri. Sebbene entrambi gli assembly di questo esempio utilizzino le stesse chiavi, è possibile utilizzare chiavi differenti per i due assembly.
Per creare un assembly firmato e un assembly Friend in Visual Studio
Aprire un prompt dei comandi di Visual Studio.
Utilizzare la sequenza di comandi seguente con lo strumento Nome sicuro per generare un file di chiave e visualizzare la relativa chiave pubblica. Per ulteriori informazioni, vedere Strumento Nome sicuro (Sn.exe).
Generare una chiave con nome sicuro per questo esempio e archiviarla nel file FriendAssemblies.snk:
sn - k FriendAssemblies.snk
Estrarre la chiave pubblica da FriendAssemblies.snk e inserirla in FriendAssemblies.publickey:
sn - p FriendAssemblies.snk FriendAssemblies.publickey
Visualizzare la chiave pubblica nel file FriendAssemblies.publickey:
sn - tp FriendAssemblies.publickey
Creare un nuovo file di Visual Basic denominato FriendAssembliesSnA.vb e contenente il codice seguente. Il codice utilizza l'attributo InternalsVisibleToAttribute per dichiarare FriendAssembliesSnB come assembly Friend.
Una nuova chiave pubblica viene generata ogni volta che viene eseguito lo strumento Nome sicuro. Pertanto, è necessario sostituire la chiave pubblica nel codice seguente con la chiave pubblica appena generata, come indicato nell'esempio seguente.
' FriendAssembliesSnA.vb. ' Compile with: ' Vbc.exe /target:library /keyfile:FriendAssemblies.snk FriendAssembliesSnA.vb Imports System.Runtime.CompilerServices ' Replace the value of PublicKey with your public key. <Assembly: InternalsVisibleTo("FriendAssembliesSnB, PublicKey=" & _ "002400000480000094000000060200000024000052534131000400000100010065364c" & _ "640a04ab7c4f06313779601ffb5d1284b381393ad2ede92b4bf91384bbfdb0f9b7ecf6" & _ "a387b7f9348fc59366987429db41ee061c1a808eb408c4ebd9aebd0d4b19b721121a0d" & _ "c66949f12878c4e2add5489f6208f49e67ddee4d0bb72fa6860a775b7e2232209efe8b" & _ "4566ea8bd9319a4b8feb3ef4911e7a7d2e957a92")> ' Friend class. Friend Class FriendAssembliesSnA Public Sub Test() MsgBox("Friend Assemblies Sample") End Sub End Class
Compilare e firmare FriendAssembliesSnA.vb:
Vbc.exe /target:library /keyfile:FriendAssemblies.snk FriendAssembliesSnA.vb
Creare un nuovo file di Visual Basic denominato FriendAssembliesSnB.vb e contenente il codice seguente. Poiché FriendAssembliesSnA specifica FriendAssembliesSnB come assembly Friend, il codice in FriendAssembliesSnB può accedere ai membri e ai tipi Friend da FriendAssembliesSnA.
' FriendAssembliesSnB.vb. ' Compile with: ' Vbc.exe /keyfile:FriendAssemblies.snk /r:FriendAssembliesSnA.dll FriendAssembliesSnB.vb Module FriendAssembliesSnB Public Sub Main() ' Access a Friend class. Dim friendTest As New FriendAssembliesSnA friendTest.Test() End Sub End Module
Compilare e firmare FriendAssembliesSnB.vb:
Vbc.exe /keyfile:FriendAssemblies.snk /r:FriendAssembliesSnA.dll FriendAssembliesSnB.vb
Il nome dell'assembly generato dal compilatore deve corrispondere al nome dell'assembly Friend passato all'attributo InternalsVisibleToAttribute. È possibile impostare in modo esplicito l'assembly utilizzando l'opzione del compilatore /out. Per ulteriori informazioni, vedere /out (Visual Basic).
Eseguire FriendAssembliesSnB.exe.
Il programma visualizza una finestra di messaggio contenente la stringa " Friend Assemblies Sample".
Sicurezza
Ci sono somiglianze tra l'attributo InternalsVisibleToAttribute e la classe StrongNameIdentityPermission. La differenza principale è che StrongNameIdentityPermission può esigere autorizzazioni di sicurezza per eseguire una particolare sezione di codice, mentre l'attributo InternalsVisibleToAttribute controlla la visibilità dei membri e dei tipi Friend.
Vedere anche
Attività
Procedura: creare assembly Friend non firmati
Concetti
Assembly Friend (Visual Basic)
Riferimenti
Strumento Nome sicuro (Sn.exe)