/moduleassemblyname (Especificar un ensamblado de confianza para el módulo) (Opción del compilador de C# )
Actualización: noviembre 2007
Especifica un ensamblado a cuyos tipos no públicos puede tener acceso .netmodule.
/moduleassemblyname:assembly_name
Argumentos
- assembly_name
El nombre del ensamblado a cuyos tipos no públicos puede tener acceso .netmodule.
Comentarios
Se debe utilizar /moduleassemblyname al generar .netmodule cuando se den las condiciones siguientes:
.netmodule necesita tener acceso a los tipos no públicos de un ensamblado existente.
Se conoce el nombre del ensamblado en el que se generará .netmodule.
El ensamblado existente ha concedido acceso de ensamblado de confianza al ensamblado en el que se generará .netmodule.
Para obtener más información sobre cómo generar .netmodule, vea /target:module (Crear un módulo para agregarlo a un ensamblado) (Opciones del compilador de C#).
Para obtener más información sobre los ensamblados de confianza, vea Ensamblados de confianza (Guía de programación de C#).
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 genera 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 módulo .netmodule que tiene acceso a un tipo no público del ensamblado moduleassemblyname_1.dll. Al saber que dicho .netmodule se generará en un ensamblado llamado csman_an_assembly, se puede especificar /moduleassemblyname, lo que permite que el módulo .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 genera el ensamblado csman_an_assembly, haciendo referencia al ensamblado y .netmodule generados previamente.
// 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