プロジェクト内の参照の管理

外部コンポーネントまたは接続しているサービスを使用するためにコードを記述する前に、あらかじめプロジェクトにそのコンポーネントへの参照を追加しておく必要があります。 参照は、本質的には、Visual Studio がコンポーネントまたはサービスを検索するために必要な情報を含むプロジェクト ファイル内のエントリです。

参照を追加する方法は、作業中のコードのプロジェクトの種類によって異なります。

参照は、次の種類のコンポーネントとサービスに追加できます。

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

  • UWP アプリ

  • COM コンポーネント

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

  • 共有プロジェクト

  • XML Web サービス

UWP アプリの参照

ユニバーサル Windows プラットフォーム (UWP) は、Windows を実行するすべてのデバイスに共通のアプリ プラットフォームを提供します。 UWP アプリを作成する方法については、「チュートリアル: XAML と C# を使用して Visual Studio で初めてのユニバーサル Windows プラットフォーム アプリケーションを作成する」を参照してください。

プロジェクト参照

ユニバーサル Windows プラットフォーム (UWP) プロジェクトでは、ソリューション内の他の UWP プロジェクトへの参照、あるいは Windows 8.1 プロジェクトまたはバイナリへの参照を作成できます (ただし、これらのプロジェクトが、Windows 10 以降で非推奨とされた API を使用していない場合)。 詳細については、「 Windows Runtime 8 から UWP への移行」を参照してください。

Windows 8.1 プロジェクトの Windows 10 以降への再ターゲットを選択した場合は、「Visual Studio プロジェクトのポート、移行、アップグレード」を参照してください。

ヒント

Windows 10 および Windows 11 用の新しい UWP アプリを作成およびビルドする方法については、「UWP バージョン の選択」を参照してください。

拡張 SDK の参照

Visual Basic、C#、C++、JavaScript の各ユニバーサル Windows プラットフォーム (UWP) アプリは、Windows 8.1 を対象とする拡張 SDK を参照できます (ただし、Windows 10 以降で非推奨とされた API をこれらの拡張 SDK が使用していない場合)。 UWP アプリからそれを参照できるかどうかを確認するには、その拡張 SDK の販売元のサイトを調べます。

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

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

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

    Note

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

    重要

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

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

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

  5. エラーの原因となったプロジェクト内の [参照] または [依存関係] ノードを右クリックして [参照の追加] を選択します。

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

デザイン時の参照の追加

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

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

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

Note

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

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

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

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

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

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

異なるバージョンの .NET を対象にしたプロジェクトまたはアセンブリを参照するアプリケーションを作成できます。 たとえば、.NET Framework 4.6 を対象とするアプリケーションを作成し、そのアプリケーションで .NET Framework 4.5 を対象とするアセンブリを参照できます。 旧バージョンの .NET を対象とするプロジェクトを作成した場合は、そのプロジェクト内で、それより新しいバージョンを対象とするプロジェクトまたはアセンブリを参照することはできません。

詳細については、フレームワークのターゲット設定に関するページを参照してください。

プロジェクト間参照

プロジェクト間参照とは、アセンブリを含むプロジェクトへの参照であり、プロジェクト参照は [参照マネージャー] ダイアログ ボックスの [プロジェクト] タブを使用して追加します。 Visual Studio は、プロジェクトへのパスが指定されると、アセンブリを見つけることができます。

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

Note

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

共有プロジェクト参照

他のほとんどのプロジェクトの種類とは異なり、"共有プロジェクト" にはバイナリ出力がありません。 代わりに、このコードは参照する各プロジェクトにコンパイルされます。 共有プロジェクトを使用すると、多くの異なるアプリケーション プロジェクトによって参照される共通のコードを記述できます。 コードは、参照している各プロジェクトの一部としてコンパイルされ、プラットフォーム固有の機能を共有コード ベースに組み込むのに役立つコンパイラ ディレクティブを含めることができます。 [参照マネージャー] ダイアログ ボックスの [共有プロジェクト] タブで、共有プロジェクトへの参照を追加します。

ファイル参照

ファイル参照とは、Visual Studio プロジェクトのコンテキスト外にあるアセンブリへの直接参照です。 これは、[参照マネージャー] ダイアログ ボックスの [参照] タブを使って作成します。 アセンブリまたはコンポーネントだけが手元にあり、それを出力として作成したプロジェクトがない場合は、ファイル参照を使用します。