/moduleassemblyname(C# 컴파일러 옵션)
.netmodule에서 액세스할 수 있는 netmodule이 액세스할 수 있습니다.
/moduleassemblyname:assembly_name
인수
- assembly_name
.netmodule에서 액세스할 수 있는 public이 아닌 형식을 가진 어셈블리의 이름입니다. netmodule이 액세스할 수 있습니다.
설명
/moduleassemblyname은 빌드할 때 사용해야 합니다. netmodule을 빌드하는 경우 다음 조건에 해당하면:
The . 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();
}
}