다음을 통해 공유


/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();
    }
}
  

참고 항목

작업

방법: 프로젝트 속성 및 구성 설정 수정

기타 리소스

C# 컴파일러 옵션