Share via


/moduleassemblyname (friend-Assembly für Modul angeben) (C#-Compileroption)

Aktualisiert: November 2007

Gibt eine Assembly an, auf deren nicht öffentliche Typen ein .netmodule zugreifen kann.

/moduleassemblyname:assembly_name

Argumente

  • assembly_name
    Der Name der Assembly, auf deren nicht öffentliche Typen das .netmodule zugreifen kann.

Hinweise

/moduleassemblyname sollte beim Erstellen eines .netmodule verwendet werden, wenn folgende Bedingungen erfüllt sind:

  • Das .netmodule benötigt Zugriff auf nicht öffentliche Typen in einer vorhandenen Assembly.

  • Sie kennen den Namen der Assembly, die aus dem .netmodule erstellt wird.

  • Die vorhandene Assembly hat der Assembly, die aus dem .netmodule erstellt wird, friend-Assemblyzugriff gewährt.

Weitere Informationen zum Erstellen eines .netmodule finden Sie unter /target:module (Modul zum Hinzufügen zu Assembly erstellen) (C#-Compileroptionen).

Weitere Informationen zu friend-Assemblys finden Sie unter Friend-Assemblys (C#-Programmierhandbuch).

Diese Option ist nicht innerhalb der Entwicklungsumgebung, sondern nur bei der Kompilierung über die Befehlszeile verfügbar.

Diese Compileroption ist in Visual Studio nicht verfügbar und kann programmgesteuert nicht geändert werden.

Beispiel

In diesem Beispiel wird eine Assembly mit einem privaten Typ erstellt, die einer Assembly mit dem Namen csman_an_assembly friend-Assemblyzugriff gewährt.

// moduleassemblyname_1.cs
// compile with: /target:library
using System;
using System.Runtime.CompilerServices;

[assembly:InternalsVisibleTo ("csman_an_assembly")]

class An_Internal_Class 
{
    public void Test() 
    { 
        Console.WriteLine("An_Internal_Class.Test called"); 
    }
}

In diesem Beispiel wird ein .netmodule erstellt, das auf einen nicht öffentlichen Typ in der Assembly moduleassemblyname_1.dll zugreift. Da bekannt ist, dass aus diesem .netmodule eine Assembly mit dem Namen csman_an_assembly erstellt wird, kann /moduleassemblyname festgelegt werden. Dadurch kann das .netmodule auf nicht öffentliche Typen in einer Assembly zugreifen, die der Assembly csman_an_assembly friend-Assemblyzugriff gewährt.

// moduleassemblyname_2.cs
// compile with: /moduleassemblyname:csman_an_assembly /target:module /reference:moduleassemblyname_1.dll
class B {
    public void Test() {
        An_Internal_Class x = new An_Internal_Class();
        x.Test();
    }
}

In diesem Codebeispiel wird die Assembly csman_an_assembly erstellt, die auf die vorher erstellte Assembly sowie auf das .netmodule verweist.

// csman_an_assembly.cs
// compile with: /addmodule:moduleassemblyname_2.netmodule /reference:moduleassemblyname_1.dll
class A {
    public static void Main() {
        B bb = new B();
        bb.Test();
    }
}

An_Internal_Class.Test called

Siehe auch

Weitere Ressourcen

C#-Compileroptionen

Projekteigenschaften (Visual Studio)