Freigeben über


/moduleassemblyname (C#-Compileroption)

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

/moduleassemblyname:assembly_name

Argumente

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

Hinweise

/moduleassemblyname sollte verwendet werden, wenn Sie erstellen ein . netmodule und wo die folgenden Bedingungen wahr sind:

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

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

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

Weitere Informationen zum Erstellen . netmodule, siehe /target:module (C#-Compileroptionen).

Weitere Informationen zu friend-Assemblys finden Sie unter Friend-Assemblys (C# und Visual Basic).

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

Diese Compileroption steht in Visual Studio nicht zur Verfügung. Sie kann nicht programmgesteuert 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"); 
    }
}

Erstellt wird in diesem Beispiel ein . netmodule, das auf einen nicht öffentlichen Typ in der Assembly "moduleassemblyname_1.dll2 zugreift. Durch das Wissen, dass dieses . netmodule wird in der Assembly "csman_an_assembly" erstellt. /moduleassemblyname kann angegeben werden. Dadurch kann netmodule für den Zugriff auf nicht öffentliche Typen in einer Assembly, die Friend-Assemblyzugriff auf "csman_an_assembly" erteilt hat.

// 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. netmodule.

// 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();
    }
}
  

Siehe auch

Weitere Ressourcen

C#-Compileroptionen

Projekteigenschaften (Visual Studio)