プロジェクト参照の管理

外部コンポーネントを使用するためにコードを記述する前に、あらかじめプロジェクトにそのコンポーネントへの参照を追加しておく必要があります。参照は、次の種類のコンポーネントに対して行うことができます。

  • Windows ストア アプリケーションの参照

  • .NET Framework クラス ライブラリまたはアセンブリ

  • COM コンポーネント

  • 同じソリューション内のプロジェクトにあるその他のアセンブリまたはクラス ライブラリ

  • XML Web サービス

XML Web サービス参照の詳細については、「Web References」を参照してください。

Windows ストア アプリケーションの参照

プロジェクト参照

Windows 8 を対象とする Windows ストア プロジェクトは、Windows 8.1 を対象とする Windows ストア プロジェクトやバイナリに依存することはできません。

アプリ内のいずれかのプロジェクトが Windows 8.1 を対象としており、アプリが C++ Windows ストア プロジェクトで構成されている場合、次の手順を実行する必要があります。

  1. アプリ内のすべてのプロジェクトを Windows 8.1 に再ターゲットします。アプリケーション内の各プロジェクトを右クリックし、[Windows 8.1 に再ターゲット] をクリックします。次に、[プロジェクトとソリューションの変更をレビュー] ダイアログで [OK] をクリックします。

  2. C++ Windows ストア プロジェクトに依存する Visual Basic、Visual C#、JavaScript のすべてのプロジェクトを右クリックし、[参照の追加] をクリックして、[Windows] タブに移動します。次に [Extensions] (拡張機能) サブタブで、[Microsoft Visual C++ ランタイム パッケージ v11.0] をオフに、[Microsoft Visual C++ ランタイム パッケージ v12.0] をオンにし、[OK] をクリックします。

Windows 8.1 を対象としている Visual Basic、C#、JavaScript の各 Windows ストア プロジェクトは、Windows 8 を対象としている Visual Basic や C# の各 Windows ストア プロジェクトを参照できますが、それらのプロジェクトが、Windows 8.1 で廃止された API を使用していないことが必要です。Windows 8.1 プロジェクトから参照したときに Windows 8 を対象とする Windows ストア プロジェクトが引き続き目的どおりに動作するかどうかを確認するには、"Migrating Windows 8 apps to Windows 8.1 Preview (Windows 8 アプリの Windows 8.1 Preview への移行)" を参照してください。

拡張 SDK の参照

Windows 8.1 を対象とする Visual Basic、C#、C++、JavaScript の各 Windows ストア プロジェクトは、Microsoft Visual C++ ランタイム パッケージ v11.0 に依存する拡張 SDK を参照できません。これは、実行時の問題が発生するためです。拡張 SDK が Microsoft Visual C++ ランタイム パッケージ v11.0 に依存しているかどうかを調べるには、まず新しい C# Windows ストア プロジェクトを作成します。そのプロジェクトを右クリックし、[参照の追加] を選択して、[Windows] タブに移動します。次に [Extensions] (拡張機能) サブタブで拡張 SDK を選択し、[参照マネージャー] の右側のウィンドウに [Microsoft.VCLibs, version = 11.0] (Microsoft.VCLibs, バージョン = 11.0) が依存関係として示されているかどうかを確認します。

Windows 8.1 を対象としている Visual Basic、C#、JavaScript の各 Windows ストア プロジェクトは、Microsoft Visual C++ ランタイム パッケージ v11.0 に依存していない拡張 SDK を参照できます。ただし、その拡張 SDK が、Windows 8.1 で廃止された API を使用していないことが条件です。Windows 8.1 を対象としている Windows ストア プロジェクトから拡張 SDK を参照できるかどうかを確認するには、その拡張 SDK の販売元のサイトを調べてください。

アプリで参照している拡張 SDK がサポートされていないことがわかった場合、次の手順を実行する必要があります。

  1. エラーの原因となっているプロジェクトの名前を確認します。プロジェクトのターゲット プラットフォームはプロジェクト名の横にあるかっこ内に表示されます。たとえば、"MyProjectName (Windows 8.1)" は、プロジェクト MyProjectName がプラットフォーム バージョン Windows 8.1 を対象としていることを意味します。

  2. サポートされていない拡張 SDK の販売元のサイトにアクセスして、プロジェクトのターゲット プラットフォームのバージョンと互換性のある依存関係を持つ拡張 SDK のバージョンをインストールします。

    [!メモ]

    ある拡張 SDK が他の拡張 SDK に依存しているかどうかを調べる 1 つの方法は、Visual Studio を再起動し、新しい C# Windows ストア プロジェクトを作成することです。そのプロジェクトを右クリックし、[参照の追加] をクリックして、[Windows] タブに移動します。次に [Extensions] (拡張機能) サブタブで拡張 SDK を選択し、[参照マネージャー] の右ペインを確認します。依存関係がある場合は、そのウィンドウに表示されます。

    重要 : 重要

    プロジェクトが Windows 8.1 を対象としており、前の手順でインストールした拡張 SDK が Microsoft Visual C++ ランタイム パッケージに依存している場合は、Windows 8.1 と互換性のある Microsoft Visual C++ ランタイム パッケージのバージョンは v12.0 になります。このバージョンは Visual Studio 2013 と共にインストールされます。

  3. 前の手順インストールした拡張 SDK が他の拡張 SDK に依存している場合、その依存関係に関連する販売元のサイトにアクセスして、プロジェクトの対象であるプラットフォームのバージョンと互換性のある依存先バージョンをインストールします。

  4. Visual Studio を再起動し、アプリを開きます。

  5. エラーの原因となっているプロジェクトを右クリックし、[参照の追加] (Visual Basic、C#、JavaScript プロジェクトの場合) または [参照] (C++ プロジェクトの場合) をクリックします。C++ プロジェクトの場合は、[新しい参照の追加] をクリックします。

  6. [Windows] タブをクリックし、[Extensions] (拡張機能) サブタブをクリックしてから、古い拡張 SDK に対応するチェック ボックスをオフにし、新しい拡張 SDK に対応するチェック ボックスをオンにします。[OK] をクリックします。

デザイン時の参照の追加

デザイン時に 1 つ以上の参照を追加するには、ビルド中のプロジェクトの種類に応じて、[参照マネージャー] ダイアログ ボックスまたは [参照の追加] ダイアログ ボックスを使用します。すべての Windows ストア アプリケーション、および他のほとんどのプロジェクトの種類では、[参照マネージャー] ダイアログ ボックスを使用します。詳細については、「方法: 参照マネージャーを使用して参照を追加または削除する」を参照してください。その他の少数のプロジェクトでは [参照の追加] のダイアログ ボックスがサポートされています。詳細については、「方法: [参照の追加] ダイアログ ボックスを使用して参照を追加または削除する」を参照してください。

[参照の追加] ダイアログ ボックスを使用すると、一覧にないアセンブリを参照できます。GAC ("グローバル アセンブリ キャッシュ (グローバル アセンブリ キャッシュ)") は厳密にランタイム環境の一部であるため、そこから参照を追加することはできません。

プロジェクトでアセンブリを参照すると、Visual Studio は次の場所でアセンブリを検索します。

  • 現在のプロジェクト ディレクトリ。ここにあるアセンブリは、[参照] タブに表示されます。

  • 同じソリューション内のその他のプロジェクト ディレクトリ。ここにあるアセンブリは、[プロジェクト] タブに表示されます。

デザイン時に参照を追加する方法の詳細については、「方法: [参照の追加] ダイアログ ボックスを使用して参照を追加または削除する」を参照してください。

[!メモ]

すべてのプロジェクトには、mscorlib への暗黙的な参照が含まれます。Visual Basic プロジェクトには、Microsoft.VisualBasic への暗黙的な参照が含まれます。

Visual Studio 内のすべてのプロジェクトでは、System.Core が参照のリストから削除された場合でも、すべてのプロジェクトに System.Core への暗黙的な参照が含まれます。

実行時の共有コンポーネントへの参照

実行時には、コンポーネントがプロジェクトの出力パスまたは GAC (グローバル アセンブリ キャッシュ) のどちらかにある必要があります。どちらの場所にも存在しないオブジェクトへの参照がプロジェクトに含まれている場合は、プロジェクトをビルドするときに、その参照をプロジェクトの出力パスにコピーする必要があります。CopyLocal プロパティは、コピーを作成する必要があるかどうかを示します。値が True の場合は、プロジェクトをビルドするときに参照がプロジェクト ディレクトリにコピーされます。値が False の場合は、参照はコピーされません。

GAC に登録されているカスタム コンポーネントへの参照を含むアプリケーションを配置した場合、CopyLocal の設定に関係なく、そのコンポーネントはアプリケーションと共に配置されません。Visual Studio の旧バージョンでは、参照に CopyLocal プロパティを設定して、アセンブリを確実に配置することができました。現バージョンでは、アセンブリを \Bin フォルダーに手動で追加する必要があります。これにより、すべてのカスタム コードを監視下に置いて、見覚えのないカスタム コードを公開するリスクを軽減します。

アセンブリまたはコンポーネントがグローバル アセンブリ キャッシュまたはフレームワーク コンポーネントである場合、既定では、CopyLocal プロパティは False に設定されます。それ以外の場合、値は True に設定されます。プロジェクト間参照は、常に True に設定されます。

異なるバージョンの .NET Framework を対象とするプロジェクトまたはアセンブリへの参照

異なるバージョンの .NET Framework を対象にしたプロジェクトまたはアセンブリを参照するアプリケーションを作成できます。たとえば、.NET Framework 4 Client Profile を対象とするアプリケーションを作成し、そのアプリケーションで .NET Framework 2.0 を対象とするアセンブリを参照できます。以前のバージョンの .NET Framework を対象とするプロジェクトを作成した場合、そのプロジェクトでは、.NET Framework 4 Client Profile または .NET Framework Version 4 を対象とするプロジェクトまたはアセンブリを参照することはできません。

詳細については、「対象となる特定の .NET Framework のバージョンまたはプロファイルの指定」を参照してください。

プロジェクト間参照とファイル参照

ファイル参照とは、アセンブリへの直接参照であり、[参照の追加] ダイアログ ボックスの [参照] タブを使用して作成します。プロジェクト間参照とは、アセンブリを格納するプロジェクトへの参照であり、これらは [参照の追加] ダイアログ ボックスの [プロジェクト] タブを使用して作成します。

プロジェクト間参照の利点は、ビルド システム内のプロジェクト間に依存関係が作成されることです。このため、参照元のプロジェクトの前回のビルド以降に依存プロジェクトが変更されていると、依存プロジェクトのビルドが行われます。ファイル参照ではビルド依存関係が作成されないため、依存プロジェクトをビルドせずに参照元のプロジェクトをビルドできます。したがって、参照が古くなる可能性があります。つまり、プロジェクトから、同じプロジェクトの以前にビルドされたバージョンが参照される場合があります。その結果、bin ディレクトリ内に 1 つの DLL の複数のバージョンが求められる場合がありますが、これを実現するのは不可能です。この矛盾が生じた場合は、"警告 : プロジェクト 'project' の依存関係 'file' は、参照 'file.' を上書きするため、実行ディレクトリにコピーできません。" などのメッセージが表示されます。

コンパイル エラーが発生する可能性があるため、同じソリューション内の他のプロジェクトの出力に対するファイル参照は追加しないでください。代わりに、[参照の追加] ダイアログ ボックスの [プロジェクト] タブを使用して、同じソリューション内でのプロジェクト間参照を作成します。そうすることによってプロジェクトに作成したクラス ライブラリに対する管理性が向上し、チーム開発が容易になります。詳細については、「壊れた参照のトラブルシューティング」および「方法 : プロジェクトの依存関係を作成および削除する」を参照してください。

[!メモ]

あるプロジェクトが対象とする .NET Framework のバージョンが Version 4.5 であり、他のプロジェクトが対象とする .NET Framework が Version 2、3.0、3.5、または 4.0 である場合は、プロジェクト参照ではなくファイル参照が作成されます。

Web 参照

[Web 参照の追加] ダイアログ ボックスを使用して Web 参照を追加することもできます。詳細については、「How to: Add and Remove Web References」を参照してください。

参照

処理手順

壊れた参照のトラブルシューティング

方法: [参照の追加] ダイアログ ボックスを使用して参照を追加または削除する

概念

方法: 参照マネージャーを使用して参照を追加または削除する

その他の技術情報

Referencing Namespaces and Components

Managing References

アセンブリを使用したプログラミング