/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, auf die nicht öffentliche Typen .netmodule zugreifen kann.
Hinweise
/moduleassemblyname sollte verwendet werden, wenn .netmodule erstellt wird und wenn die folgenden Bedingungen erfüllt sind:
Der .netmodule-Anforderungszugriff an nicht öffentlichen Typen in eine vorhandene Assembly ein.
Sie kennen den Namen der Assembly, in die .netmodule erstellt wird.
Die vorhandene Assembly verfügt friend-Assemblyzugriff der Assembly gewährt, in die .netmodule erstellt wird.
Weitere Informationen zum Erstellen von .netmodule, finden Sie unter /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");
}
}
Dieses Beispiel erstellt .netmodule, das auf ein nicht öffentlicher Typ in der Assembly moduleassemblyname_1.dll zugreift. Durch das Wissen, dass dieses .netmodule in eine Assembly erstellt wird, wird compilergenerierter csman_an_assembly, wir kann /moduleassemblyname angeben auf und erlaubte .netmodule an nicht öffentlichen Zugriff, Typen in einer Assembly, die zu csman_an_assembly friend-Assemblyzugriff 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();
}
}
Dieses Codebeispiel erstellt die Assembly csman_an_assembly und verweist auf die Assembly und zuvor-erstellte .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
Aufgaben
Gewusst wie: Ändern von Projekteigenschaften und Konfigurationseinstellungen