デザイン時のアセンブリの解決Resolving Assemblies at Design Time

[参照の追加] ダイアログの [.NET] タブを使用してアセンブリへの参照を追加する場合、その参照は中間参照アセンブリを指します。つまり、すべての型情報と署名情報を含んでいるが、コードを必ずしも含まないアセンブリを指します。When you add a reference to an assembly through the .NET tab of the Add Reference dialog, the reference points to an intermediate reference assembly, that is, an assembly that contains all the type and signature information, but that does not necessarily contain any code. [.NET] タブには、.NET Framework のランタイム アセンブリに対応する参照アセンブリの一覧が表示されます。The .NET tab lists reference assemblies that correspond to runtime assemblies in the .NET Framework. さらに、サードパーティによって使用される、登録済みの AssemblyFoldersEx フォルダーのランタイム アセンブリに対応する参照アセンブリの一覧も表示されます。In addition, it lists reference assemblies that correspond to runtime assemblies in the registered AssemblyFoldersEx folders used by third parties.

マルチ ターゲットMulti-Targeting

Visual Studio 2013Visual Studio 2013 では、共通言語ランタイム (CLR: Common Language Runtime) Version 2.0 または Version 4 で実行される複数のバージョンの .NET Framework を対象にすることができます。 lets you target versions of the .NET Framework that run either on the Common Language Runtime (CLR) version 2.0 or version 4. これには、.NET Framework Version 2.0、3.0、3.5、4、4.5、4.5.1 および Silverlight Version 1.0、2.0、3.0 が含まれます。This includes .NET Framework versions 2.0, 3.0, 3.5, 4, 4.5, and 4.5.1, and Silverlight versions 1.0, 2.0, and 3.0. CLR Version 2.0 または Version 4 に基づいた新しいバージョンの .NET Framework がリリースされた場合、この Framework はターゲット パックを使用してインストールでき、Visual Studio でターゲットとして自動的に表示されます。If a new .NET Framework version that is based on CLR version 2.0 or version 4 is released, the Framework can be installed by using a targeting pack, and it will automatically show up as a target in Visual Studio.

型解決の動作How Type Resolution Works

CLR は、実行時に GAC、bin ディレクトリ、およびすべてのプローブ パスを調べることで、アセンブリ内の型を解決します。At runtime, the CLR resolves the types in the assembly by looking in the GAC, the bin directory, and in any probing paths. これは、フュージョン ローダーによって処理されます。This is handled by the fusion loader. では、フュージョン ローダーはどうやって調査対象を認識するのでしょうか。But, how does the fusion loader know what it is looking for? これは、デザイン時、アプリケーションのビルド中に行われた解決によって異なります。This depends on a resolution made at design time, when the application is built.

ビルド中、コンパイラは参照アセンブリを使用してアプリケーションの型を解決します。During the build, the compiler resolves application types by using reference assemblies. .NET Framework Version 2.0、3.0、3.5、4、4.5、4.5.1 では、参照アセンブリは .NET Framework のインストール時にインストールされます。In .NET Framework versions 2.0, 3.0, 3.5, 4, 4.5, and 4.5.1, the reference assemblies are installed when the .NET Framework is installed.

参照アセンブリは、対応するバージョンの .NET Framework SDK に付属するターゲット パックによって提供されます。The reference assemblies are supplied by the targeting pack that ships with the corresponding version of the .NET Framework SDK. Framework 自体が提供するのは、ランタイム アセンブリだけです。The Framework itself provides only the runtime assemblies. アプリケーションをビルドするには、.NET Framework と、対応する .NET Framework SDK の両方をインストールする必要があります。In order to build applications, you need to install both the .NET Framework and the corresponding .NET Framework SDK.

特定の .NET Framework を対象とする場合、ビルド システムは、ターゲット パックの参照アセンブリを使用してすべての型を解決します。When you target a specific .NET Framework, the build system resolves all types by using the reference assemblies in the targeting pack. 実行時には、フュージョン ローダーにより、これらの型が通常は GAC 内にあるランタイム アセンブリに解決されます。At runtime, the fusion loader resolves these same types to the runtime assemblies, which are typically located in the GAC.

参照アセンブリを使用できない場合、ビルド システムはランタイム アセンブリを使用してアセンブリの型を解決します。If reference assemblies are not available, then the build system resolves assembly types by using the runtime assemblies. GAC のランタイム アセンブリは、マイナー バージョン番号では区別されないため、間違ったアセンブリに解決される可能性があります。Because runtime assemblies in the GAC are not distinguished by minor version numbers, it is possible that resolution will be made to the wrong assembly. この現象は、たとえば、.NET Framework Version 3.0 を対象としているのに、Version 3.5 で導入された新しいメソッドが参照されている場合に発生することがあります。This could happen, for example, if a new method introduced in the .NET Framework version 3.5 is referenced while targeting version 3.0. ビルドは成功し、アプリケーションはビルド コンピューターで動作しますが、Version 3.5 がインストールされていないコンピューターに配置すると正常に動作しなくなります。The build will succeed, and the application will run on the build machine, but will fail when deployed to a machine that does not have version 3.5 installed.

.NET Framework SDK に現在付属しているターゲット パックには、そのバージョンの Framework のすべてのランタイム アセンブリのリストが含まれています。これは再配布 (Redist) リストと呼ばれます。The targeting pack that now ships with the .NET Framework SDK includes a list of all of the runtime assemblies in that version of the Framework, called the redistribution (redist) list. これにより、ビルド システムが型を間違ったバージョンのアセンブリに解決することはなくなっています。This makes it impossible for the build system to resolve types against the wrong version of the assembly.

関連項目See Also

詳細な概念Advanced Concepts