Freigeben über


Friend-Assemblys (Visual Basic)

Aktualisiert: November 2007

Eine Friend-Assembly ist eine Assembly, der gestattet wird, auf die Friend-Typen und -Member einer anderen Assembly zuzugreifen. (Weitere Informationen finden Sie unter Friend (Visual Basic).) Wenn Sie eine Assembly als Friend-Assembly identifizieren, müssen Sie Typen und Member nicht mehr als öffentlich kennzeichnen, damit andere Assemblys auf sie zugreifen können. Dies ist insbesondere in den folgenden Szenarien nützlich:

  • Bei Komponententests, wenn Testcode in einer eigenen Assembly ausgeführt wird, jedoch Zugriff auf Member der zu testenden Assembly erfordert, die als Friend gekennzeichnet sind.

  • Beim Entwickeln einer Klassenbibliothek, wenn Erweiterungen der Bibliothek in eigenen Assemblys enthalten sind, jedoch Zugriff auf Member in vorhandenen Assemblys erfordern, die als Friend gekennzeichnet sind.

Hinweise

Mithilfe des InternalsVisibleToAttribute-Attributs können Sie eine oder mehrere Friend-Assemblys für eine bestimmte Assembly identifizieren. Wenn Sie beispielsweise das InternalsVisibleToAttribute-Attribut in Assembly A angeben und Assembly B als eine Friend-Assembly festlegen, kann Assembly B auf alle Typen und Member in Assembly A zugreifen, die als Friend gekennzeichnet sind, wie im folgenden Beispiel gezeigt.

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

Nur Assemblys, die Sie explizit als Friend-Assemblys angeben, können auf Friend-Typen und -Member zugreifen. Wenn beispielsweise Assembly B eine Friend-Assembly von Assembly A ist und Assembly C auf Assembly B verweist, kann C nicht auf die Friend-Typen in A zugreifen.

Der Compiler führt für den Namen der Friend-Assembly, der dem InternalsVisibleToAttribute-Attribut übergeben wird, einige grundlegende Überprüfungen durch. Wenn Assembly A Assembly B als Friend-Assembly deklariert, gelten die folgenden Validierungsregeln:

  • Wenn Assembly A einen starken Namen verwendet, muss auch Assembly B einen starken Namen verwenden. Der Name der Friend-Assembly, der dem Attribut übergeben wird, muss aus dem Assemblynamen und dem öffentlichen Schlüssel des Schlüssels mit starkem Namen bestehen, mit dem Assembly B signiert wird.

    Der Name der Friend-Assembly, der dem InternalsVisibleToAttribute-Attribut übergeben wird, kann nicht der starke Name von Assembly B sein: Geben Sie für die Assembly weder die Version, die Kultur, die Architektur noch das öffentliche Schlüsseltoken an.

  • Wenn Assembly A keinen starken Namen verwendet, sollte der Name der Friend-Assembly nur aus dem Assemblynamen bestehen. Weitere Informationen finden Sie unter Gewusst wie: Erstellen von unsignierten Friend-Assemblys.

  • Wenn Assembly B einen starken Namen verwendet, müssen Sie für Assembly B in den Projekteinstellungen oder auf der Befehlszeile mithilfe der /keyfile-Compileroption den Schlüssel mit starkem Namen angeben. Weitere Informationen finden Sie unter Gewusst wie: Erstellen von signierten Friend-Assemblys.

Informationen zum Zugreifen auf die Friend-Typen und -Methoden einer Assembly aus einer Moduldatei (eine Datei mit der Erweiterung .netmodule) finden Sie unter /moduleassemblyname.

Sicherheitshinweis:

Das InternalsVisibleToAttribute-Attribut ist mit der StrongNameIdentityPermission-Klasse vergleichbar. Der Hauptunterschied liegt darin, dass von StrongNameIdentityPermission Sicherheitsberechtigungen für die Ausführung einzelner Codeabschnitte angefordert werden können, während das InternalsVisibleToAttribute-Attribut die Sichtbarkeit von als Friend definierten Typen und Membern steuert.

Siehe auch

Aufgaben

Gewusst wie: Erstellen von unsignierten Friend-Assemblys

Gewusst wie: Erstellen von signierten Friend-Assemblys

Konzepte

Assemblys

Referenz

InternalsVisibleToAttribute

Assembly Linker-Tool (Al.exe)

/addmodule

Weitere Ressourcen

Visual Basic-Compiler