Udostępnij za pośrednictwem


/moduleassemblyname (opcja kompilatora C#)

Określa zestaw których typy niepublicznych .netmodule można uzyskać dostęp.

/moduleassemblyname:assembly_name

Argumenty

  • assembly_name
    Nazwa zestawu, którego niepublicznych typów .netmodule, można uzyskać dostęp.

Uwagi

/moduleassemblynamepowinny być używane podczas konstruowania .netmodule, a w przypadku, gdy są spełnione następujące warunki:

  • .netmodule musi mieć dostęp do typów niepublicznych w istniejący zestaw.

  • Znasz nazwę zespołu, do którego zostanie zbudowany .netmodule.

  • Istniejący zestaw udzielił dostępu zestawu przyjaciela do zestawu, do którego zostanie zbudowany .netmodule.

Aby uzyskać więcej informacji na temat budowania .netmodule, zobacz /target:module (opcje kompilatora C#).

Aby uzyskać więcej informacji na temat zestawów przyjaciela, zobacz Przyjazne zestawy (C# i Visual Basic).

Ta opcja nie jest dostępna w środowisku programistycznym; dostępna tylko podczas kompilacji z wiersza polecenia.

Ta opcja kompilatora jest niedostępny w programie Visual Studio i nie można zmienić programowo.

Przykład

Ten przykład buduje zestaw o prywatnych typu, a to daje dostęp do zestawu friend do zestawu o nazwie 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"); 
    }
}

W przykładzie tworzy .netmodule, uzyskuje dostęp do typu niepublicznych w moduleassemblyname_1.dll zestawu.Wiedząc, że ten .netmodule będą wbudowane w zestawie o nazwie csman_an_assembly, możemy określić /moduleassemblyname, pozwalając .netmodule dostępu niepublicznych typów w zestawie, do którego udzielił przyjaciel zestawu dostępu do 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();
    }
}

Ten przykładowy kod tworzy csman_an_assembly zestawu, odwoływanie się do zgromadzenia wcześniejsza kompilacja i .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();
    }
}
  

Zobacz też

Zadania

Porady: modyfikowanie właściwości projektu i ustawień konfiguracji

Inne zasoby

Opcje kompilatora C#