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