-reference (C# コンパイラ オプション)-reference (C# Compiler Options)

-reference オプションを指定すると、コンパイラは指定されたファイルの public 型の情報を現在のプロジェクトにインポートし、指定されたアセンブリ ファイルからメタデータを参照できるようにします。The -reference option causes the compiler to import public type information in the specified file into the current project, thus enabling you to reference metadata from the specified assembly files.




アセンブリ マニフェストを含むファイルの名前。The name of a file that contains an assembly manifest. 複数のファイルをインポートするには、ファイルごとに個別に -reference オプションを指定します。To import more than one file, include a separate -reference option for each file.

アセンブリ内のすべての名前空間を格納するルート名前空間を表す有効な C# 識別子。A valid C# identifier that will represent a root namespace that will contain all namespaces in the assembly.


複数のファイルからインポートするには、ファイルごとに -reference オプションを指定します。To import from more than one file, include a -reference option for each file.

インポートするファイルは、マニフェストが含まれている必要があります。出力ファイルは、-target:module 以外のいずれかの -target オプションでコンパイルされている必要があります。The files you import must contain a manifest; the output file must have been compiled with one of the -target options other than -target:module.

-r-reference の省略形です。-r is the short form of -reference.

アセンブリ マニフェストを含まない出力ファイルからメタデータをインポートするには、-addmodule を使います。Use -addmodule to import metadata from an output file that does not contain an assembly manifest.

あるアセンブリ (アセンブリ A) を参照していて、そのアセンブリが別のアセンブリ (アセンブリ B) を参照している場合は、以下の条件が当てはまる場合はアセンブリ B を参照する必要があります。If you reference an assembly (Assembly A) that references another assembly (Assembly B), you will need to reference Assembly B if:

  • アセンブリ A から使う型がアセンブリ B の型から継承されているか、アセンブリ B からインターフェイスを実装している。A type you use from Assembly A inherits from a type or implements an interface from Assembly B.

  • アセンブリ B の戻り値の型またはパラメーターの型を使用するフィールド、プロパティ、イベント、またはメソッドを呼び出す。You invoke a field, property, event, or method that has a return type or parameter type from Assembly B.

アセンブリ参照が存在するディレクトリを指定するには、-lib を使います。Use -lib to specify the directory in which one or more of your assembly references is located. -lib のトピックでは、コンパイラがアセンブリを検索するディレクトリについても説明されています。The -lib topic also discusses the directories in which the compiler searches for assemblies.

モジュールではなくアセンブリ内の型をコンパイラで認識するには、型の解決を強制する必要があります。そのためには、型のインスタンスを定義します。In order for the compiler to recognize a type in an assembly, and not in a module, it needs to be forced to resolve the type, which you can do by defining an instance of the type. アセンブリの型名を解決する方法は他にもあります。たとえば、アセンブリの型を継承すると、コンパイラで型名が認識されます。There are other ways to resolve type names in an assembly for the compiler: for example, if you inherit from a type in an assembly, the type name will then be recognized by the compiler.

1 つのアセンブリ内から、同じコンポーネントの 2 つの異なるバージョンを参照することが必要になる場合があります。Sometimes it is necessary to reference two different versions of the same component from within one assembly. そのためには、ファイルごとに -reference スイッチの alias サブオブションを使って、2 つのファイルを区別します。To do this, use the alias suboption on the -reference switch for each file to distinguish between the two files. この別名は、コンポーネント名の修飾子として使われ、いずれかのファイルのコンポーネントに解決されます。This alias will be used as a qualifier for the component name, and will resolve to the component in one of the files.

既定では、よく使われる .NET Framework アセンブリを参照する csc 応答 (.rsp) ファイルが使われます。The csc response (.rsp) file, which references commonly used .NET Framework assemblies, is used by default. コンパイラが csc.rsp を使わないようにする場合は、-noconfig を指定します。Use -noconfig if you do not want the compiler to use csc.rsp.


Visual Studio では、 [参照の追加] ダイアログ ボックスを使います。In Visual Studio, use the Add Reference dialog box. 詳細については、方法:参照マネージャーを使用して参照を追加または削除するFor more information, see How to: Add or Remove References By Using the Reference Manager. -reference を使った場合と [参照の追加] ダイアログ ボックスを使った場合で、参照の追加の動作が同じになるようにするには、追加するアセンブリの [相互運用型の埋め込み] プロパティを [False] に設定します。To ensure equivalent behavior between adding references by using -reference and adding references by using the Add Reference dialog box, set the Embed Interop Types property to False for the assembly that you're adding. このプロパティの既定値は [True] です。True is the default value for the property.


この例では、extern alias 機能を使う方法を示します。This example shows how to use the extern alias feature.

ソース ファイルをコンパイルし、grid.dllgrid20.dll からメタデータをインポートします。これらは事前にコンパイルしておきます。You compile the source file and import metadata from grid.dll and grid20.dll, which have been compiled previously. 2 つの DLL には同じコンポーネントの異なるバージョンが含まれており、ソース ファイルをコンパイルするには 2 つの -reference と別名オプションを使います。The two DLLs contain separate versions of the same component, and you use two -reference with alias options to compile the source file. オプションは次のようになります。The options look like this:

-reference:GridV1=grid.dll -reference:GridV2=grid20.dll  

これは、外部別名 GridV1GridV2 を設定します。プログラムではこれらを extern ステートメントで使います。This sets up the external aliases GridV1 and GridV2, which you use in your program by means of an extern statement:

extern alias GridV1;  
extern alias GridV2;  
// Using statements go here.  

このようにすると、コントロール名にプレフィックス GridV1 を付けることで、grid.dll のグリッド コントロールを参照できます。次に示すのはその例です。Once this is done, you can refer to the grid control from grid.dll by prefixing the control name with GridV1, like this:


さらに、コントロール名にプレフィックス GridV2 を付けることで、grid20.dll のグリッド コントロールを参照できます。次に示すのはその例です。In addition, you can refer to the grid control from grid20.dll by prefixing the control name with GridV2 like this:


関連項目See also