Share via


/moduleassemblyname (C# コンパイラ オプション)

.netmodule がアクセスできる非パブリック型のアセンブリを指定します。

/moduleassemblyname:assembly_name

Arguments

  • assembly_name
    非パブリック型にアクセスできる"アセンブリの名前。

解説

/moduleassemblyname は、次の条件が true である場合は"のビルド時には使用しないでください。:

  • .netmodule が非パブリック型にアクセスする既存のアセンブリが必要です。

  • .netmodule をビルドするアセンブリの名前を把握しています。

  • 既存のアセンブリが .netmodule をビルドするアセンブリにフレンド アセンブリ アクセスを許可します。

.netmodule のビルドの詳細については、「/target:module (C# コンパイラ オプション)」を参照してください。

フレンド アセンブリの詳細については、「フレンド アセンブリ (C# および Visual Basic)」を参照してください。

このオプションは開発環境内では利用できません。このオプションを利用できるのは、コマンド ラインからコンパイルするときだけです。

このコンパイラ オプションは、Visual Studio で利用できず、プログラムで変更することもできません。

使用例

この例では、プライベート型のアセンブリをビルドし、csman_an_assembly というアセンブリにフレンド アセンブリ アクセスを許可しています。

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

このサンプルでは、.netmodule からそのアセンブリ moduleassemblyname_1.dll にアクセスする .netmodule をビルドします。 この .netmodule はアセンブリにビルドされていることを確認して、次 /moduleassemblynameを指定し、csman_an_assembly 呼び出します。非パブリックにアクセスできるように"が型 csman_an_assembly にフレンド アセンブリ アクセスを許可したアセンブリをします。

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

このコード サンプルでは、アセンブリ 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();
    }
}
  

参照

処理手順

方法 : プロジェクト プロパティおよび構成設定を変更する

その他の技術情報

C# コンパイラ オプション