/reference (メタデータのインポート) (C# コンパイラ オプション)
更新 : 2007 年 11 月
/reference オプションは、指定したファイル内で public (C# リファレンス) として宣言された型の情報を現在のプロジェクトにインポートするよう、コンパイラに対して指示します。こうすることによって、指定したアセンブリ ファイルのメタデータを参照できます。
/reference:[alias=]filename
/reference:filename
引数
filename
アセンブリ マニフェストを含むファイルの名前。複数のファイルをインポートするには、ファイルごとに /reference オプションを指定します。alias
(アセンブリ内のすべての名前空間を包含する) ルート名前空間を表す有効な C# 識別子。
解説
複数のファイルをインポートするには、ファイルごとに /reference オプションを指定します。
インポートするファイルにはマニフェストが必要です。出力ファイルは、/target:module (アセンブリに追加するモジュールの作成) (C# コンパイラ オプション) 以外のいずれかの /target (出力ファイル形式の指定) (C# コンパイラ オプション) オプションを使用してコンパイルしておく必要があります。
/r は /reference の省略形です。
アセンブリ マニフェストを含まない出力ファイルからメタデータをインポートするには、/addmodule (メタデータのインポート) (C# コンパイラ オプション) を使用します。
別のアセンブリ (アセンブリ B) を参照するアセンブリ (アセンブリ A) を参照するときに、次の状況に該当する場合は、アセンブリ B も参照する必要があります。
アセンブリ A で使用する型がアセンブリ B の型を継承しているか、アセンブリ B のインターフェイスを実装している場合。
アセンブリ B の戻り値の型やパラメータの型を持つフィールド、プロパティ、イベント、またはメソッドを呼び出す場合。
/lib (アセンブリ参照場所の指定) (C# コンパイラ オプション) を使用して、1 つ以上のアセンブリ参照があるディレクトリを指定します。/lib に関するトピックでも、コンパイラがアセンブリを検索するディレクトリについて説明しています。
モジュールではなくアセンブリ内の型をコンパイラで認識するには、型の解決を強制する必要があります。型の解決を実行するには、たとえば、型のインスタンスを定義します。アセンブリの型名を解決する方法は他にもあります。たとえば、アセンブリの型を継承すると、コンパイラで型名が認識されます。
1 つのアセンブリから、同じコンポーネントの 2 種類のバージョンを参照しなければならない場合もあります。そのためには、ファイルごとに /reference スイッチで alias サブオプションを使用し、2 つのファイルを区別します。このエイリアスがコンポーネント名の修飾子として使用され、いずれかのファイルのコンポーネントに解決されます。
既定では、頻繁に使用される .NET Framework アセンブリを参照する csc 応答ファイル (.rsp) が使用されます。コンパイラで csc.rsp を使用しない場合は、/noconfig (csc.rsp の無視) (C# コンパイラ オプション) を使用します。
詳細については、「[参照の追加] ダイアログ ボックス」を参照してください。
例
extern エイリアス (C# リファレンス) 機能を使用する方法の例を次に示します。
このソース ファイルをコンパイルして、あらかじめコンパイルされた grid.dll および grid20.dllからメタデータをインポートします。この 2 つの DLL には、同じコンポーネントの異なるバージョンがそれぞれ格納されています。エイリアス オプションを付けた 2 つの /reference を使用して、ソース ファイルをコンパイルします。オプションの指定例を次に示します。
/reference:GridV1=grid.dll and /reference:GridV2=grid20.dll
これにより、外部のエイリアス "GridV1" および "GridV2" が設定され、プログラム内から extern ステートメントで使用できるようになります。
extern GridV1;
extern GridV2;
// Using statements go here.
一度このように設定すれば、コントロール名に GridV1 というプレフィックスを指定することにより、grid.dll から、グリッド コントロールを参照できます。
GridV1::Grid
また、コントロール名に GridV2 というプレフィックスを指定することにより、grid20.dll から、グリッド コントロールを参照できます。
GridV2::Grid