/moduleassemblyname(C# 컴파일러 옵션)
.netmodule에서 액세스할 수 있는netmodule이 액세스할 수 있습니다.
/moduleassemblyname:assembly_name
인수
- assembly_name
.netmodule에서 액세스할 수 있는 public이 아닌 형식을 가진 어셈블리의 이름입니다.netmodule이 액세스할 수 있습니다.
설명
/moduleassemblyname은 빌드할 때 사용해야 합니다.netmodule을 빌드하는 경우 다음 조건에 해당하면:
.netmodule에서 기존 어셈블리의 public이 아닌 형식에 액세스해야 합니다.
사용자는 어셈블리의 이름을 알고 있습니다.netmodule을 빌드할
기존 어셈블리에서 .netmodule을 빌드할 어셈블리에 대해 friend 어셈블리 액세스를 허용했습니다.netmodule을 빌드할
빌드에 대한 자세한 내용은netmodule은 /target:module(C# 컴파일러 옵션)를 참조하십시오.
friend 어셈블리에 대한 자세한 내용은 Friend 어셈블리(C# 및 Visual Basic)를 참조하십시오.
이 옵션은 개발 환경 내에서 사용할 수 없고 명령줄에서 컴파일하는 경우에만 사용할 수 있습니다.
이 컴파일러 옵션은 Visual Studio에서 사용할 수 없으며 프로그래밍 방식으로 변경할 수도 없습니다.
예제
이 샘플에서는 csman_an_assembly라는 어셈블리에 friend 어셈블리 액세스를 제공하는 private 형식의 어셈블리를 빌드합니다.
// 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");
}
}
이 샘플은 빌드합니다.moduleassemblyname_1.dll 어셈블리의 public이 아닌 형식에 액세스하는 .netmodule을 빌드합니다.이.netmodule이 csman_an_assembly라는 어셈블리로 빌드되므로 /moduleassemblyname을 지정하여.netmodule에서 csman_an_assembly에 대한 friend 어셈블리 액세스를 허용한 어셈블리의 public이 아닌 형식에 액세스할 수 있습니다.
// 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();
}
}
이 코드 샘플에서는 이전에 빌드한 어셈블리와 .netmodule을 참조하여 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();
}
}