Compartilhar via


/moduleassemblyname (especificar Assembly Friend para módulo) (opção do compilador translation from VPE for Csharp)

Especifica um assembly cujos tipos de não-públicos um.pode netmodule acesso.

/moduleassemblyname:assembly_name

Argumentos

  • assembly_name
    O nome do assembly cujos tipos de não-públicos a.pode netmodule acesso.

Comentários

/moduleassemblyname deve ser usada ao criar um. netmodule, e onde as seguintes condições forem verdadeiras:

  • A.netmodule precisa acessar tipos não-públicos em um assembly existente.

  • Você souber o nome do assembly no qual o.netmodule será criado.

  • O conjunto existente concedeu amigo assembly acesso ao conjunto de módulos (assembly) no qual o.netmodule será criado.

Para obter mais informações sobre a criação de um.netmodule, consulte /destino:módulo (módulo criar Adicionar assembly) (Opções do compilador translation from VPE for Csharp).

Para obter mais informações sobre amigo de módulos (assemblies), consulte Friend Assemblies (Guia de programação C#).

Essa opção não está disponível no ambiente de desenvolvimento; ela só está disponível durante a compilação da linha de comando.

Esta opção de compilador está disponível no Visual Studio e não pode ser alterado programaticamente.

Exemplo

Este exemplo cria um assembly com um tipo particular e que dá amigo assembly acesso a um assembly chamado 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 exemplo cria um.netmodule que acessa um tipo não público na moduleassemblyname_1.dll assembly.Sabendo que esta.netmodule será compilado em um assembly chamado csman_an_assembly, podemos especificar /moduleassemblyname, permitindo que o. netmodule acessar tipos não-públicos em um assembly que foi concedido acesso de assembly amigo ao 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 exemplo de código cria o assembly csman_an_assembly, fazendo referência ao assembly compilado anteriormente e.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 called

Consulte também

Outros recursos

Opções do Compilador C#

Propriedades de Projeto (Visual Studio)