Поделиться через


/moduleassemblyname (параметры компилятора C#)

Задает сборку, к неоткрытым типам которой может получить доступ netmodule.

/moduleassemblyname:assembly_name

Аргументы

  • assembly_name
    Имя сборки, к чьим неоткрытым типам может обращаться файл с расширением .netmodule.

Заметки

/moduleassemblyname должен использоваться при построении файла .netmodule и, когда выполняются следующие условия:

  • Для файла .netmodule требуется доступ к неоткрытым типам в существующей сборке.

  • Известно имя сборки, в которой будет создан .netmodule.

  • Существующая сборка предоставила дружественной сборке доступ к сборке, в которую будет встроен .netmodule.

Дополнительные сведения о построении .netmodule содержатся в /target:module (параметры компилятора C#).

Дополнительные сведения о дружественных сборках см. в разделе Дружественные сборки (C# и Visual Basic).

Этот параметр недоступен из среды разработки; он доступен только при компиляции из командной строки.

Этот параметр компилятора недоступен в среде разработки Visual Studio и не может быть изменен программным способом.

Пример

Следующий пример выполняет построение сборки с закрытым типом и предоставляем дружественной сборке доступ к сборке с именем 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"); 
    }
}

Этот пример строит .netmodule, который обращается к неоткрытому типу в сборке moduleassemblyname_1.dll. Узнав, что этот .netmodule будет встроен в сборку под названием csman_an_assembly, можно указать /moduleassemblyname, позволяя .netmodule обращаться к неоткрытым типам в сборке, которой предоставлен доступ к дружественной сборке 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();
    }
}

Следующий код выполняет построение сборки csman_an_assembly, ссылаясь на ранее построенную сборку и .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();
    }
}
  

См. также

Задачи

Практическое руководство. Изменение свойств проекта и параметров конфигурации

Другие ресурсы

Параметры компилятора C#