/moduleassemblyname (Opción del compilador de C#)
Especifica un ensamblado a cuyos tipos no públicos puede obtener acceso un módulo de .NET.
/moduleassemblyname:assembly_name
Argumentos
- assembly_name
El nombre del ensamblado a cuyos tipos no públicos puede tener acceso . puede obtener acceso un módulo de .NET.
Comentarios
Se debería utilizar /moduleassemblyname al compilar un . netmodule cuando se den las condiciones siguientes:
. netmodule necesita tener acceso a los tipos no públicos de un ensamblado existente.
Sabe el nombre del ensamblado en el que . se compilará netmodule.
El ensamblado existente ha concedido acceso de ensamblado de confianza al ensamblado en el que . se compilará netmodule.
Para obtener más información sobre cómo compilar netmodule, vea /target:module (Opciones del compilador de C#).
Para obtener más información sobre los ensamblados de confianza, vea Ensamblados de confianza (C# y Visual Basic).
Esta opción no está disponible en el entorno de desarrollo; sólo está disponible al compilar desde la línea de comandos.
Esta opción del compilador no está disponible en Visual Studio y no se puede cambiar mediante programación.
Ejemplo
Este ejemplo compila un ensamblado con un tipo privado que concede acceso de ensamblado de confianza a un ensamblado llamado 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");
}
}
Este ejemplo genera un . netmodule que tiene acceso a un tipo no público del ensamblado moduleassemblyname_1.dll. Sabiendo que esto netmodule se integrará en un ensamblado denominado csman_an_assembly, se puede especificar /moduleassemblyname, lo que permite que . netmodule tenga acceso a los tipos no públicos de un ensamblado que ha concedido acceso de ensamblado de confianza a 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();
}
}
Este ejemplo de código compila el ensamblado csman_an_assembly, haciendo referencia al ensamblado compilado previamente y a . 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();
}
}