/moduleassemblyname (C#-Compileroption)/moduleassemblyname (C# Compiler Option)

Gibt eine Assembly an, auf deren nicht öffentliche Typen ein .NET-Modul zugreifen kann.Specifies an assembly whose non-public types a .netmodule can access.

SyntaxSyntax

/moduleassemblyname:assembly_name  

ArgumenteArguments

assembly_name
Der Name einer Assembly, auf deren nicht öffentliche Typen die NETMODULE-Datei zugreifen kannThe name of the assembly whose non-public types the .netmodule can access.

HinweiseRemarks

/moduleassemblyname sollte beim Erstellen einer NETMODULE-Datei, und wenn die folgenden Bedingungen erfüllt sind, verwendet werden:/moduleassemblyname should be used when building a .netmodule, and where the following conditions are true:

  • Die NETMODULE-Datei benötigt Zugriff auf nicht öffentliche Typen in einer vorhandenen Assembly.The .netmodule needs access to non-public types in an existing assembly.

  • Sie kennen den Namen der Assembly, in die die NETMODULE-Datei integriert wird.You know the name of the assembly into which the .netmodule will be built.

  • Die vorhandene Assembly hat der Assembly, in die die NETMODULE-Datei integriert wird, Friend-Assembly-Zugriff erteilt.The existing assembly has granted friend assembly access to the assembly into which the .netmodule will be built.

Weitere Informationen zum Erstellen einer NETMODULE-Datei finden Sie unter /target:module (C#-Compileroptionen).For more information on building a .netmodule, see /target:module (C# Compiler Options).

Weitere Informationen finden Sie unter Friend-Assemblys.For more information on friend assemblies, see Friend Assemblies.

Diese Option steht nicht in der Entwicklungsumgebung zur Verfügung. Sie ist nur verfügbar, wenn Sie über die Befehlszeile kompilieren.This option is not available from within the development environment; it is only available when compiling from the command line.

Diese Compileroption steht in Visual Studio nicht zur Verfügung und kann auch nicht programmgesteuert angepasst werden.This compiler option is unavailable in Visual Studio and cannot be changed programmatically.

BeispielExample

In diesem Beispiel wird eine Assembly mit einem privaten Typ erstellt, und die Friend-Assembly-erhält Zugriff auf eine Assembly namens „csman_an_assembly“.This sample builds an assembly with a private type, and that gives friend assembly access to an assembly called csman_an_assembly.

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

BeispielExample

In diesem Beispiel wird eine NETMODULE-Datei erstellt, das auf einen nicht öffentlichen Typ in der Assembly „moduleassemblyname_1.dll“ zugreift.This sample builds a .netmodule that accesses a non-public type in the assembly moduleassemblyname_1.dll. Da wir wissen, dass die NETMODULE-Datei in eine Assembly namens „csman_an_assembly“ integriert wird, können wir /moduleassemblyname angeben. Dadurch wird der NETMODULE-Datei ermöglicht, auf nicht öffentliche Typen in einer Assembly zuzugreifen, die Friend-Assembly-Zugriff auf „csman_an_assembly“ gewährt hat.By knowing that this .netmodule will be built into an assembly called csman_an_assembly, we can specify /moduleassemblyname, allowing the .netmodule to access non-public types in an assembly that has granted friend assembly access to csman_an_assembly.

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

BeispielExample

In diesem Codebeispiel wird die Assembly „csman_an_assembly“ erstellt, die auf die zuvor erstellte Assembly und eine NETMODULE-Datei verweisen.This code sample builds the assembly csman_an_assembly, referencing the previously-built assembly and .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();  
    }  
}  

An_Internal_Class.Test aufgerufenAn_Internal_Class.Test called

Siehe auchSee Also

C#-CompileroptionenC# Compiler Options
Verwalten von Projekt- und ProjektmappeneigenschaftenManaging Project and Solution Properties