/moduleassemblyname(C# 컴파일러 옵션)
netmodule에서 액세스할 수 있는 public이 아닌 형식으로 된 어셈블리를 지정합니다.
/moduleassemblyname:assembly_name
인수
- assembly_name
public이 아닌 형식이 .netmodule을 입력하는 어셈블리의 이름에 액세스 할 수 있습니다.
설명
/moduleassemblyname 는 .netmodule를 빌드하는 경우와 다음과 같은 경우에 사용 되어야 합니다:
netmodule은 기존 어셈블리의 public이 아닌 형식에 액세스해야 합니다.
.netmodule를 빌드할 어셈블리의 이름을 알아야 합니다.
존재하는 어셈블리는 .netmodule를 빌드할 어셈블리에 대해 friend 어셈블리 액세스를 허용합니다.
.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 라는 어셈블리로 빌드 되는지를 알면, 우리는 csman_an_assembly에 대한 friend 어셈블리 액세스 권한이 부여 된 어셈블리에서 public이 아닌 형식에 액세스 할 수 있도록 /moduleassemblyname를 지정할 수 있습니다.
// 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 어셈블리를 빌드합니다.
// 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();
}
}