Condividi tramite


Assembly Friend (Visual Basic)

Aggiornamento: novembre 2007

Un assembly Friend è un assembly che ha il diritto di accedere ai tipi e ai membri Friend di un altro assembly. Per ulteriori informazioni, vedere Friend (Visual Basic). Se si identifica un assembly come assembly Friend, non è più necessario contrassegnare tipi e membri come pubblici per accedere ad essi da altri assembly. Questo è particolarmente utile negli scenari seguenti:

  • Durante gli unit test, quando il codice del test è in esecuzione in un assembly separato ma richiede l'accesso ai membri dell'assembly testato che è contrassegnato come Friend.

  • Durante lo sviluppo di una libreria di classi e le aggiunte alla libreria sono contenute in assembly separati ma richiedono l'accesso ai membri di assembly esistenti contrassegnati come Friend.

Osservazioni

Si utilizza l'attributo InternalsVisibleToAttribute per identificare uno o più assembly Friend per un determinato assembly. Ad esempio, se si include l'attributo InternalsVisibleToAttribute nell'assembly A e si specifica l'assembly B come assembly Friend, l'assembly B avrà accesso a tutti i tipi e i membri nell'assembly A contrassegnati come Friend, come illustrato nell'esempio seguente.

Imports System.Runtime.CompilerServices

<Assembly: InternalsVisibleTo("FriendAssembliesB")> 

' Friend class.
Friend Class FriendAssembliesA
    Public Sub Test()
        MsgBox("Friend Assemblies Sample Class")
    End Sub
End Class

' Public class with a Friend method.
Public Class FriendAssembliesClassA
    Friend Sub Test()
        MsgBox("Friend Assemblies Sample Method")
    End Sub
End Class

Solo assembly specificati in modo esplicito come Friend possono accedere ai tipi e ai membri Friend. Ad esempio, se l'assembly B è Friend per l'assembly A e l'assembly C fa riferimento all'assembly B, C non ha accesso ai tipi Friend in A.

Il compilatore esegue alcune convalide di base del nome dell'assembly Friend passato all'attributo InternalsVisibleToAttribute. Se l'assembly A dichiara B come assembly Friend, le regole di convalida sono le seguenti:

  • Se assembly A possiede un nome sicuro, anche l'assembly B deve avere un nome sicuro. Il nome dell'assembly Friend passato all'attributo deve essere costituito dal nome dell'assembly e dalla chiave pubblica della chiave con nome sicuro utilizzata per firmare l'assembly B.

    Il nome dell'assembly Friend passato all'attributo InternalsVisibleToAttribute non può essere il nome sicuro dell'assembly B: non includono la versione dell'assembly, le impostazioni cultura, l'architettura, o il token di chiave pubblica.

  • Se l'assembly A non dispone di un nome sicuro, il nome dell'assembly Friend deve essere costituito solo dal nome dell'assembly. Per ulteriori informazioni, vedere Procedura: creare assembly Friend non firmati.

  • Se l'assembly B ha un nome sicuro, è necessario specificare la chiave con nome sicuro per l'assembly B utilizzando l'impostazione di progetto o l'opzione del compilatore /keyfile della riga di comando. Per ulteriori informazioni, vedere Procedura: creare assembly Friend firmati.

Per informazioni sull'accesso ai tipi e membri di un assembly Friend da un file di un modulo (un file con estensione .netmodule), vedere /moduleassemblyname.

Nota sulla 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

Procedura: creare assembly Friend firmati

Concetti

Assembly

Riferimenti

InternalsVisibleToAttribute

Assembly Linker (Al.exe)

/addmodule

Altre risorse

Compilatore di Visual Basic