[参照マネージャー] ダイアログ ボックスを使用して、自分、Microsoft、または他の会社が開発したコンポーネントへの参照を追加および管理できます。 ユニバーサル Windows アプリを開発している場合、プロジェクトは正しい Windows SDK DLL をすべて自動的に参照します。 .NET プロジェクトを作成すると、プロジェクトは必要なコンポーネント (.NET SDK など) を自動的に参照しますが、機能を追加するときに参照を追加する必要があります。 一部の .NET API は、手動で追加する必要があるコンポーネントで公開されています。 COM コンポーネントまたはカスタム コンポーネントへの参照を手動で追加する必要があります。
参照しているライブラリで NuGet パッケージを使用できる場合は、NuGet パッケージ マネージャーを使用します。 「NuGet パッケージのインストールと使用」を参照してください。
[参照マネージャー] ダイアログ ボックス
[参照マネージャー] ダイアログ ボックスの左側には、プロジェクトの種類に応じて、さまざまなカテゴリが表示されます。
フレームワークサブグループと拡張機能サブグループを含むアセンブリ (.NET Framework のみ)
COM には、参照可能なすべての COM コンポーネントが一覧表示されます
Core サブグループと拡張機能サブグループを含む Windows。 オブジェクト ブラウザーを使用して、Windows SDK または拡張機能 SDK の参照を調べることができます。
ブラウズ、最近サブグループ
注
C++ プロジェクトを開発している場合は、[参照マネージャー] ダイアログ ボックスに [参照 ] が表示されないことがあります。
参照を追加する
ソリューション エクスプローラーで、[参照] または [依存関係] ノードを右クリックし、コンテキスト メニューから [プロジェクト参照の追加]、[共有プロジェクト参照の追加]、または [COM 参照の追加] を選択します。 (プロジェクト ノードを右クリックし、ポップアップ メニューから [追加 ] を選択して、これらのオプションから選択することもできます)。
参照マネージャー が開き、使用可能な参照がグループ別に一覧表示されます。
追加する参照を選択し、[ OK] を選択します。
注
探している参照が表示されない場合は、[ 参照 ] を選択して参照を見つけます。 (C++ プロジェクトを開発している場合は、参照オプションが表示されないことがあります)。
[アセンブリ] タブ (.NET Framework のみ)
注
[ アセンブリ ] タブは、.NET Core または .NET 5 以降を対象とするプロジェクトでは使用できません。 [ 参照 ] を選択してファイルシステム内のアセンブリを検索し、参照として追加します。 プロジェクト内の参照先アセンブリを表示するには、プロジェクトの [依存関係 ] ノードを展開します。 [依存関係] ノードから右クリックして、プロジェクト参照の追加または削除、アセンブリ ノード内のアセンブリの表示または削除、NuGet パッケージ ブラウザーを開いて NuGet パッケージを管理できます。 NuGet ドキュメント の「NuGet パッケージ マネージャーを使用した Visual Studio でのパッケージのインストールと管理 」を参照してください。
.NET Framework プロジェクトの場合、[ アセンブリ ] タブには、参照に使用できるすべての .NET アセンブリが一覧表示されます。 GAC の アセンブリ はランタイム環境の一部であるため、[アセンブリ] タブにはグローバル アセンブリ キャッシュ (GAC) のアセンブリは一覧表示されません。 GAC に登録されているアセンブリへの参照を含むアプリケーションを配置またはコピーする場合、アセンブリは[ローカルコピー]設定に関係なく、アプリケーションと共に配置または コピー されません。 詳細については、「 プロジェクト内の参照を管理する」を参照してください。
任意の EnvDTE 名前空間 (EnvDTE、EnvDTE80、EnvDTE90、EnvDTE90a、またはEnvDTE100) への参照を手動で追加する場合は、[プロパティ] ウィンドウで参照の [相互運用機能の型の埋め込み] プロパティを False に設定します。 このプロパティを True に設定すると、埋め込みできない特定の EnvDTE プロパティが原因でビルドの問題が発生する可能性があります。
すべてのデスクトップ プロジェクトには、 mscorlib への暗黙的な参照が含まれています。 Visual Basic プロジェクトには、 Microsoft.VisualBasicへの暗黙的な参照が含まれています。 すべてのプロジェクトには、参照の一覧から削除された場合でも、 System.Core への暗黙的な参照が含まれています。
[ アセンブリ ] タブは、次の 2 つのサブタブで構成されます。
フレームワーク には、対象となるフレームワークを構成するすべてのアセンブリが一覧表示されます。
.NET Core またはユニバーサル Windows プラットフォームを対象としないプロジェクトの場合、[ フレームワーク ] タブには、対象のフレームワークからアセンブリが列挙されます。 ユーザーは、アプリケーションに必要な参照を追加する必要があります。
ユニバーサル Windows プロジェクトには、既定で対象となるフレームワーク内のすべてのアセンブリへの参照が含まれています。 マネージド プロジェクトでは、ソリューション エクスプローラーの [参照] フォルダーの下にある読み取り専用ノードは、フレームワーク全体への参照を示します。 したがって、[ フレームワーク ] タブにはフレームワークのアセンブリが列挙されておらず、代わりに次のメッセージが表示されます。"すべてのフレームワーク アセンブリは既に参照されています。 オブジェクト ブラウザーを使用して、フレームワーク内の参照を探索してください。"
拡張機能 には、対象となるフレームワークを拡張するために、コンポーネントとコントロールの外部ベンダーが開発したすべてのアセンブリが一覧表示されます。 ユーザー アプリケーションの目的によっては、これらのアセンブリが必要になる場合があります。
拡張機能 は、次の場所に登録されているアセンブリを列挙することによって設定されます。
32 ビット コンピューター:
HKEY_CURRENT_USER\SOFTWARE\Microsoft\[Target Framework Identifier]\v[Target Framework Version]\AssemblyFoldersEx\[UserComponentName]\@default=[Disk ___location of assemblies]
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\[Target Framework Identifier]\v[Target Framework Version]\AssemblyFoldersEx\[UserComponentName]\@default=[Disk ___location of assemblies]
64 ビット コンピューター:
HKEY_CURRENT_USER\SOFTWARE\Wow6432Node\Microsoft\[Target Framework Identifier]\v[Target Framework Version]\AssemblyFoldersEx\[UserComponentName]\@default=[Disk ___location of assemblies]
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\[Target Framework Identifier]\v[Target Framework Version]\AssemblyFoldersEx\[UserComponentName]\@default=[Disk ___location of assemblies]
以前のバージョンの [ターゲット フレームワーク識別子]
たとえば、プロジェクトが 32 ビット コンピューター上の .NET Framework 4 を対象とする場合、 Extensions は \Microsoft.NETFramework\v4.0\AssemblyFoldersEx、 \Microsoft.NETFramework\v3.5\AssemblyFoldersEx、 \Microsoft.NETFramework\v3.0\AssemblyFoldersEx、および \Microsoft.NETFramework\v2.0\AssemblyFoldersEx の下に登録されているアセンブリを列挙します。
プロジェクトのフレームワーク バージョンによっては、一覧の一部のコンポーネントが表示されない場合があります。 この状況は、次の条件下で発生する可能性があります。
最新のフレームワーク バージョンを使用するコンポーネントは、以前のバージョンを対象とするプロジェクトと互換性がありません。
プロジェクトのターゲット フレームワークのバージョンを変更する方法については、「 フレームワークのターゲット設定の概要」を参照してください。
以前のバージョンの .NET Framework を使用するコンポーネントは、新しい .NET Framework を対象とするプロジェクトと互換性がありません。
.NET Framework バージョン間のバージョン互換性の詳細については、「 バージョンの互換性」を参照してください。
コンパイル エラーが発生する可能性があるため、同じソリューション内の別のプロジェクトの出力にファイル参照を追加しないようにする必要があります。 代わりに、[参照の追加] ダイアログ ボックスの [プロジェクト] タブを使用して、プロジェクト間参照を作成します。 この方法では、プロジェクトで作成するクラス ライブラリをより適切に管理できるため、チームの開発が容易になります。 詳細については、「 壊れた参照のトラブルシューティング」を参照してください。
注
プロジェクト参照の代わりにファイル参照が作成されるのは、あるプロジェクトのターゲット フレームワーク バージョンが .NET Framework 4.5 以降で、もう一方のプロジェクトのターゲット バージョンが .NET Framework 2、3、3.5、または 4.0 の場合です。 .NET、.NET Framework、.NET Core の詳細については、「 .NET (および .NET Core) とは」を参照してください。
[参照の追加] ダイアログ ボックスにアセンブリを表示するには
アセンブリを次のいずれかの場所に移動またはコピーします。
現在のプロジェクト ディレクトリ。 ([参照] タブを使用して、これらのアセンブリを見つけることができます)。
同じソリューション内の他のプロジェクト ディレクトリ。 (これらのアセンブリは、[ プロジェクト ] タブを使用して見つけることができます)。
-又は-
表示するアセンブリの場所を指定するレジストリ キーを設定します。
32 ビット オペレーティング システムの場合は、次のいずれかのレジストリ キーを追加します。
[HKEY_CURRENT_USER\SOFTWARE\Microsoft\.NETFramework\<VersionMinimum>\AssemblyFoldersEx\MyAssemblies]@="<AssemblyLocation>"
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\<VersionMinimum>\AssemblyFoldersEx\MyAssemblies]@="<AssemblyLocation>"
64 ビット オペレーティング システムの場合は、32 ビット レジストリ ハイブに次のいずれかのレジストリ キーを追加します。
[HKEY_CURRENT_USER\SOFTWARE\Wow6432Node\Microsoft\.NETFramework\<VersionMinimum>\AssemblyFoldersEx\MyAssemblies]@="<AssemblyLocation>"
[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\.NETFramework\<VersionMinimum>\AssemblyFoldersEx\MyAssemblies]@="<AssemblyLocation>"
<VersionMinimum> は、適用される最も低いフレームワーク バージョンです。 <VersionMinimum> が v3.0 の場合、AssemblyFoldersEx で指定されたフォルダーは、.NET Framework 3.0 以降を対象とするプロジェクトに適用されます。
<AssemblyLocation> は、[ 参照の追加 ] ダイアログ ボックスに表示するアセンブリのディレクトリです ( C:\MyAssemblies など)。
HKEY_LOCAL_MACHINE
ノードの下にレジストリ キーを作成すると、すべてのユーザーは、[参照の追加] ダイアログ ボックスで指定した場所にアセンブリを表示できます。HKEY_CURRENT_USER
ノードの下にレジストリ キーを作成すると、現在のユーザーの設定にのみ影響します。[ 参照の追加 ] ダイアログ ボックスをもう一度開きます。 アセンブリは 、[.NET ] タブに表示されます。そうでない場合は、アセンブリが指定された AssemblyLocation ディレクトリにあることを確認し、Visual Studio を再起動してから、もう一度やり直してください。
[プロジェクト] タブ
[ プロジェクト ] タブの [ ソリューション ] サブタブには、現在のソリューション内のすべての互換性のあるプロジェクトが一覧表示されます。
プロジェクトは、別のフレームワーク バージョンを対象とする別のプロジェクトを参照できます。 たとえば、.NET 8.0 を対象とするが、.NET 6.0 用にビルドされたアセンブリを参照するプロジェクトを作成できます。 ただし、.NET 6.0 プロジェクトは .NET Framework 8.0 プロジェクトを参照できません。 詳細については、「Framework のターゲット設定の概要」を参照してください。
[共有プロジェクト] タブ
[参照マネージャー] ダイアログ ボックスの [共有プロジェクト] タブで、共有プロジェクトへの参照を追加します。 共有プロジェクトを使用すると、さまざまなアプリケーション プロジェクトによって参照される一般的なコードを記述できます。
[ユニバーサル Windows] タブ
[ ユニバーサル Windows ] タブには、Windows オペレーティング システムを実行するプラットフォームに固有のすべての SDK が一覧表示されます。 このタブには、 コア と 拡張機能の 2 つのサブグループがあります。
コア サブグループ
ユニバーサル Windows アプリ プロジェクトには、既定でユニバーサル Windows SDK への参照があります。 したがって、参照マネージャーのコア サブグループは、ユニバーサル Windows SDK のアセンブリを列挙しません。
拡張機能サブグループ
拡張機能 には、対象となる Windows プラットフォームを拡張するユーザー SDK が一覧表示されます。
SDK は、Visual Studio が 1 つのコンポーネントとして扱うファイルのコレクションです。 [ 拡張機能 ] タブでは、[参照マネージャー] ダイアログ ボックスが呼び出されたプロジェクトに適用される SDK が 1 つのエントリとして一覧表示されます。 プロジェクトに追加すると、すべての SDK コンテンツが Visual Studio によって使用されるため、ユーザーは IntelliSense、ツールボックス、デザイナー、オブジェクト ブラウザー、ビルド、デプロイ、デバッグ、およびパッケージ化で SDK コンテンツを活用するためにそれ以上のアクションを実行する必要はありません。
[拡張機能] タブに SDK を表示する方法については、「ソフトウェア開発キットの作成」を参照してください。
注
プロジェクトが別の SDK に依存する SDK を参照している場合、2 番目の SDK への参照を手動で追加しない限り、Visual Studio は 2 つ目の SDK を使用しません。 [拡張機能] タブで SDK を選択すると、[参照マネージャー] ダイアログ ボックスを使用すると、詳細ウィンドウに依存関係を一覧表示することで、SDK の依存関係を識別できます。
プロジェクトの種類が拡張機能をサポートしていない場合、このタブは [参照マネージャー] ダイアログ ボックスに表示されません。
COMタブ
[ COM ] タブには、参照に使用できるすべての COM コンポーネントが一覧表示されます。 内部マニフェストを含む登録済み COM DLL への参照を追加する場合は、まず DLL の登録を解除します。 それ以外の場合、Visual Studio はネイティブ DLL としてではなく、ActiveX コントロールとしてアセンブリ参照を追加します。
プロジェクトの種類が COM をサポートしていない場合、[参照マネージャー] ダイアログ ボックスにタブが表示されません。
参照
[参照] ボタンを使用して、ファイル システム内のコンポーネントまたはアセンブリを参照できます。
プロジェクトは、別のフレームワーク バージョンを対象とするコンポーネントを参照できます。 たとえば、.NET Framework 4.7.2 を対象とするが、.NET Framework 4 を対象とするコンポーネントを参照するアプリケーションを作成できます。 詳細については、「Framework のターゲット設定の概要」を参照してください。
この方法ではコンパイル エラーが発生する可能性があるため、同じソリューション内の別のプロジェクトの出力にファイル参照を追加しないでください。 代わりに、[参照マネージャー] ダイアログ ボックスの [ ソリューション ] タブを使用して、プロジェクト間参照を作成します。 これにより、プロジェクトで作成するクラス ライブラリをより適切に管理できるため、チームの開発が容易になります。 詳細については、「 壊れた参照のトラブルシューティング」を参照してください。
SDK を参照してプロジェクトに追加することはできません。 ファイル (アセンブリや .winmd など) のみを参照してプロジェクトに追加できます。
WinMD へのファイル参照を実行する場合、予想されるレイアウトは、<FileName>.winmd、<FileName>.dll、および <FileName>.pri ファイルがすべて互いに並んで配置されるということです。 次のシナリオで WinMD を参照すると、不完全なファイルセットがプロジェクト出力ディレクトリにコピーされ、その結果、ビルドとランタイムのエラーが発生します。
ネイティブ コンポーネント: ネイティブ プロジェクトは、名前空間の不整合なセットごとに 1 つの WinMD を作成し、実装で構成される 1 つの DLL を作成します。 WinMD には異なる名前があります。 このネイティブ コンポーネント ファイルを参照する場合、MSBuild は、異なる名前の WinMD が 1 つのコンポーネントを作成することを認識しません。 そのため、同じ名前の <FileName>.dll と <FileName>.winmd のみがコピーされ、ランタイム エラーが発生します。 この問題を回避するには、拡張機能 SDK を作成します。 詳細については、「 ソフトウェア開発キットの作成」を参照してください。
コントロールの消費: 少なくとも、XAML コントロールは<FileName>.winmd、<FileName>.dll、<FileName>.pri、<XamlName>.xaml、および<ImageName>.jpgで構成されます。 プロジェクトがビルドされると、ファイル参照に関連付けられているリソース ファイルはプロジェクトの出力ディレクトリにコピーされません。<FileName>.winmd、<FileName>.pri のみがコピーされます。 < >リソースが見つからないことを示すビルド エラーがログに記録されます。 成功するには、ビルドとデバッグ/ランタイムのために、これらのリソース ファイルをプロジェクト出力ディレクトリに手動でコピーします。 この問題を回避するには、「 ソフトウェア開発キット の作成」の手順に従って拡張 SDK を作成するか、プロジェクト ファイルを編集して次のプロパティを追加します。
<PropertyGroup> <GenerateLibraryOutput>True</GenerateLibraryOutput> </PropertyGroup>
注
プロパティを追加すると、ビルドの実行速度が遅くなる可能性があります。
最近
アセンブリ、COM、Windows および ブラウズ は、それぞれ最近プロジェクトに追加されたコンポーネントの一覧を列挙する 最近 タブをサポートします。
検索する
[参照マネージャー] ダイアログ ボックスの検索バーは、フォーカスされているタブ上で動作します。 たとえば、[ ソリューション ] タブにフォーカスがある状態で検索バーに「System」と入力した場合、ソリューションが "System" を含むプロジェクト名で構成されていない限り、検索は結果を返しません。
参照を削除する
Visual Studio の [未使用の参照の削除] メニュー項目を使用して、 SDK スタイル プロジェクト の 未使用の参照を削除 できます。
詳細については、「未使用の 参照を削除する」を参照してください。