Share via


/moduleassemblyname(모듈의 Friend 어셈블리 지정) (C# 컴파일러 옵션)

업데이트: 2007년 11월

.netmodule에서 액세스할 수 있는 public이 아닌 형식을 가진 어셈블리를 지정합니다.

/moduleassemblyname:assembly_name

인수

  • assembly_name
    .netmodule에서 액세스할 수 있는 public이 아닌 형식을 가진 어셈블리의 이름입니다.

설명

.netmodule을 빌드하는 경우 다음 조건에 해당하면 /moduleassemblyname을 사용해야 합니다.

  • .netmodule에서 기존 어셈블리의 public이 아닌 형식에 액세스해야 합니다.

  • .netmodule을 빌드할 어셈블리의 이름을 알고 있습니다.

  • 기존 어셈블리에서 .netmodule을 빌드할 어셈블리에 대해 friend 어셈블리 액세스를 허용했습니다.

.netmodule 빌드에 대한 자세한 내용은 /target:module(어셈블리에 추가할 모듈 만들기)(C# 컴파일러 옵션)을 참조하십시오.

friend 어셈블리에 대한 자세한 내용은 Friend 어셈블리(C# 프로그래밍 가이드)를 참조하십시오.

이 옵션은 개발 환경 내에서 사용할 수 없고 명령줄에서 컴파일하는 경우에만 사용할 수 있습니다.

이 컴파일러 옵션은 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 어셈블리를 빌드합니다.

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

An_Internal_Class.Test called

참고 항목

기타 리소스

C# 컴파일러 옵션

프로젝트 속성(Visual Studio)