プロジェクト内の参照の管理Managing references in a project

外部コンポーネントまたは接続しているサービスを使用するためにコードを記述する前に、あらかじめプロジェクトにそのコンポーネントへの参照を追加しておく必要があります。Before you write code against an external component or connected service, your project must first contain a reference to it. 参照は、本質的には、Visual Studio がコンポーネントまたはサービスを検索するために必要な情報を含むプロジェクト ファイル内のエントリです。A reference is essentially an entry in a project file that contains the information that Visual Studio needs to locate the component or the service.

参照を追加するには、ソリューション エクスプローラーで参照ノードを右クリックして [参照の追加]を選択します。To add a reference, right click on the References node in Solution Explorer and choose Add Reference. 詳細については、「方法: 参照マネージャーを使用して参照を追加または削除する」を参照してください。For more information, see How to: Add or Remove References By Using the Reference Manager.

Visual C++ での参照の追加Add a reference in Visual C++

参照は、次の種類のコンポーネントとサービスに対して行うことができます。You can make a reference to the following types of components and services:

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

  • UWP アプリUWP apps

  • COM コンポーネントCOM components

  • 同じソリューション内のプロジェクトにあるその他のアセンブリまたはクラス ライブラリOther assemblies or class libraries of projects in the same solution

  • XML Web サービスXML Web services

UWP アプリの参照UWP App References

プロジェクト参照Project References

ユニバーサル Windows プラットフォーム (UWP) プロジェクトでは、ソリューション内の他の UWP プロジェクトへの参照、あるいは Windows 8.1 プロジェクトまたはバイナリへの参照を作成できます (ただし、これらのプロジェクトが、Windows 10 で使用されなくなった API を使用していない場合)。Universal Windows Platform (UWP) projects can create references to other UWP projects in the solution, or to Windows 8.1 projects or binaries, provided that these projects do not use APIs that have been deprecated in Windows 10. 詳細については、「 Windows Runtime 8 から UWP への移行」を参照してください。For more information, see Move from Windows Runtime 8 to UWP.

Windows 8.1 プロジェクトの Windows 10 への再ターゲットを選択した場合は、「Visual Studio プロジェクトのポート、移行、アップグレード」を参照してください。If you choose to retarget Windows 8.1 projects to Windows 10, see Port, Migrate, and Upgrade Visual Studio Projects

拡張 SDK の参照Extension SDK References

Visual Basic、C#、C++、JavaScript の各ユニバーサル Windows プラットフォーム (UWP) アプリは、Windows 8.1Windows 8.1 を対象とする拡張 SDK を参照できます (ただし、Windows 10 で使用されなくなった API をこれらの拡張 SDK が使用していない場合)。Visual Basic, C#, C++ and JavaScript Universal Windows Platform (UWP) apps can reference Extension SDKs that target Windows 8.1Windows 8.1, as long as these Extension SDKs do not use APIs that have been deprecated in Windows 10. UWP を対象としている Microsoft ストア プロジェクトから拡張 SDK を参照できるかどうかを確認する場合は、その拡張 SDK の販売元のサイトを調べてください。Please check the Extension SDK vendor site to find out whether it can be referenced by Microsoft Store projects that target UWP.

アプリで参照している拡張 SDK がサポートされていないことがわかった場合、次の手順を実行する必要があります。If you determine that the Extension SDK being referenced by your app is not supported, then you need to perform the following steps:

  1. エラーの原因となっているプロジェクトの名前を確認します。Look at the name of the project that is causing the error. プロジェクトのターゲット プラットフォームはプロジェクト名の横にあるかっこ内に表示されます。The platform your project is targeting is noted in parentheses next to the project name. たとえば、" MyProjectName (Windows 8.1) " は、プロジェクト MyProjectName がプラットフォーム バージョン Windows 8.1Windows 8.1を対象としていることを意味します。For example, MyProjectName (Windows 8.1) means that your project MyProjectName is targeting platform version Windows 8.1Windows 8.1.

  2. サポートされていない拡張 SDK の販売元のサイトにアクセスして、プロジェクトのターゲット プラットフォームのバージョンと互換性のある依存関係を持つ拡張 SDK のバージョンをインストールします。Go to the site of the vendor who owns the unsupported Extension SDK and install the version of the Extension SDK with dependencies that are compatible with the version of the platform your project is targeting.

    注意

    ある拡張 SDK が他の拡張 SDK に依存しているかどうかを調べる 1 つの方法は、Visual Studio を再起動し、新しい C# UWP アプリ プロジェクトを作成して、そのプロジェクトを右クリックし、[参照の追加] を選択して [Windows] タブに移動し、[拡張機能] サブタブに移動して拡張 SDK を選択し、[参照マネージャー] の右ウィンドウを確認することです。One way to find out whether an Extension SDK has dependencies on other Extension SDKs is to restart Visual Studio, create a new C# UWP app project, right-click on the project and choose Add Reference, go to the Windows tab, go to the Extensions sub-tab, select the Extension SDK and look at the right pane in the Reference Manager. 依存関係がある場合は、そのウィンドウに表示されます。If it has dependencies, they will be listed there.

    重要

    プロジェクトが Windows 10 を対象としており、前の手順でインストールした拡張 SDK が Microsoft Visual C++ ランタイム パッケージに依存している場合は、Windows 10 と互換性のある Microsoft Visual C++ ランタイム パッケージのバージョンは v14.0 になります。このバージョンは Visual Studio と共にインストールされます。If your project is targeting Windows 10, and the Extension SDK installed in the previous step has a dependency on the Microsoft Visual C++ Runtime Package, the version of Microsoft Visual C++ Runtime Package that is compatible with Windows 10 is v14.0 and is installed with Visual Studio.

  3. 前の手順インストールした拡張 SDK が他の拡張 SDK に依存している場合、その依存関係に関連する販売元のサイトにアクセスして、プロジェクトの対象であるプラットフォームのバージョンと互換性のある依存先バージョンをインストールします。If the Extension SDK you installed in the previous step has dependencies on other Extension SDKs, go to the site(s) of the vendor(s) who own the dependencies and install the versions of these dependencies that are compatible with the version of the platform your project is targeting.

  4. Visual Studio を再起動し、アプリを開きます。Restart Visual Studio and open your app.

  5. エラーの原因となったプロジェクト内の [参照] ノードを右クリックして [参照の追加] を選択します。Right-click on the References node in the project that caused the error and choose Add Reference.

  6. [Windows] タブをクリックし、 Extensions サブタブをクリックしてから、古い拡張 SDK に対応するチェック ボックスをオフにし、新しい拡張 SDK に対応するチェック ボックスをオンにします。Click the Windows tab and then the Extensions sub-tab, then uncheck the checkboxes for the old Extension SDKs and check the checkboxes for the new Extension SDKs. [OK]をクリックします。Click OK.

デザイン時の参照の追加Adding a Reference at Design Time

プロジェクトでアセンブリを参照すると、 Visual StudioVisual Studio は次の場所でアセンブリを検索します。When you make a reference to an assembly in your project, Visual StudioVisual Studio searches for the assembly in the following locations:

  • 現在のプロジェクト ディレクトリ。The current project directory. ここにあるアセンブリは、 [参照] タブに表示されます。(You can find these assemblies by using the Browse tab.)

  • 同じソリューション内のその他のプロジェクト ディレクトリ。Other project directories in the same solution. ここにあるアセンブリは、 [プロジェクト] タブに表示されます。(You can find these assemblies on the Projects tab.)

注意

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

Visual Studio 内のすべてのプロジェクトでは、 System.Coreが参照のリストから削除された場合でも、すべてのプロジェクトに System.Core への暗黙的な参照が含まれます。All projects in Visual Studio contain an implied reference to System.Core, even if System.Core is removed from the list of references.

実行時の共有コンポーネントへの参照References to Shared Components at Run Time

実行時には、コンポーネントがプロジェクトの出力パスまたは GAC (Global Assembly Cache) のどちらかにある必要があります。At run time, components must be either in the output path of the project or in the Global Assembly Cache (GAC). どちらの場所にも存在しないオブジェクトへの参照がプロジェクトに含まれている場合は、プロジェクトをビルドするときに、その参照をプロジェクトの出力パスにコピーする必要があります。If the project contains a reference to an object that is not in one of these locations, you must copy the reference to the output path of the project when you build the project. <xref:Microsoft.VisualStudio.VCProjectEngine.VCProjectReference.CopyLocal%2A> プロパティは、コピーを作成する必要があるかどうかを示します。The <xref:Microsoft.VisualStudio.VCProjectEngine.VCProjectReference.CopyLocal%2A> property indicates whether this copy has to be made. 値が Trueの場合は、プロジェクトをビルドするときに参照がプロジェクト ディレクトリにコピーされます。If the value is True, the reference is copied to the project directory when you build the project. 値が Falseの場合は、参照はコピーされません。If the value is False, the reference is not copied.

GAC に登録されているカスタム コンポーネントへの参照を含むアプリケーションを配置した場合、 <xref:Microsoft.VisualStudio.VCProjectEngine.VCProjectReference.CopyLocal%2A> の設定に関係なく、そのコンポーネントはアプリケーションと共に配置されません。If you deploy an application that contains a reference to a custom component that is registered in the GAC, the component will not be deployed with the application, regardless of the <xref:Microsoft.VisualStudio.VCProjectEngine.VCProjectReference.CopyLocal%2A> setting. Visual StudioVisual Studioの旧バージョンでは、参照に <xref:Microsoft.VisualStudio.VCProjectEngine.VCProjectReference.CopyLocal%2A> プロパティを設定して、アセンブリを確実に配置することができました。In earlier versions of Visual StudioVisual Studio, you could set the <xref:Microsoft.VisualStudio.VCProjectEngine.VCProjectReference.CopyLocal%2A> property on a reference to ensure that the assembly was deployed. 現バージョンでは、アセンブリを \Bin フォルダーに手動で追加する必要があります。Now, you must manually add the assembly to the \Bin folder. これにより、すべてのカスタム コードを監視下に置いて、見覚えのないカスタム コードを公開するリスクを軽減します。This puts all custom code under scrutiny, reducing the risk of publishing custom code with which you are not familiar.

アセンブリまたはコンポーネントがグローバル アセンブリ キャッシュまたはフレームワーク コンポーネントである場合、既定では、 <xref:Microsoft.VisualStudio.VCProjectEngine.VCProjectReference.CopyLocal%2A> プロパティは False に設定されます。By default, the <xref:Microsoft.VisualStudio.VCProjectEngine.VCProjectReference.CopyLocal%2A> property is set to False if the assembly or component is in the global assembly cache or is a framework component. それ以外の場合、値は Trueに設定されます。Otherwise, the value is set to True. プロジェクト間参照は、常に Trueに設定されます。Project-to-project references are always set to True.

異なるバージョンの .NET Framework を対象とするプロジェクトまたはアセンブリへの参照Referencing a Project or Assembly That Targets a Different Version of the .NET Framework

異なるバージョンの .NET Framework を対象にしたプロジェクトまたはアセンブリを参照するアプリケーションを作成できます。You can create applications that reference projects or assemblies that target a different version of the .NET Framework. たとえば、 .NET Framework 4 Client Profile.NET Framework 4 Client Profile を対象とするアプリケーションを作成し、そのアプリケーションで .NET Framework 2.0.NET Framework 2.0を対象とするアセンブリを参照できます。For example, you could create an application that targets the .NET Framework 4 Client Profile.NET Framework 4 Client Profile that references an assembly that targets .NET Framework 2.0.NET Framework 2.0. 以前のバージョンの .NET Framework.NET Framework を対象とするプロジェクトを作成した場合、そのプロジェクトでは、.NET Framework 4 Client Profile.NET Framework 4 Client Profile または .NET Framework Version 4 を対象とするプロジェクトまたはアセンブリを参照することはできません。If you create a project that targets an earlier version of the .NET Framework.NET Framework, you cannot set a reference in that project to a project or assembly that targets the .NET Framework 4 Client Profile.NET Framework 4 Client Profile or .NET Framework version 4.

詳細については、「対象となる特定の .NET Framework のバージョンの指定」を参照してください。For more information, see Targeting a Specific .NET Framework Version.

プロジェクト間参照Project-to-Project References

プロジェクト間参照とは、アセンブリを格納するプロジェクトへの参照です。これは [プロジェクト] タブを使用して作成します。Visual Studio は、プロジェクトへのパスが指定されると、アセンブリを見つけることができます。Project-to-project references are references to projects that contain assemblies; you create them by using the Project tab. Visual Studio can find an assembly when given a path to the project.

アセンブリを生成するプロジェクトがある場合は、ファイル参照 (下記参照) を使用せず、プロジェクトを参照してください。When you have a project that produces an assembly, you should reference the project and not use a file reference (see below). プロジェクト間参照の利点は、ビルド システム内のプロジェクト間に依存関係が作成されることです。The advantage of a project-to-project reference is that it creates a dependency between the projects in the build system. 参照元のプロジェクトの前回のビルド以降に依存プロジェクトが変更されていると、依存プロジェクトのビルドが行われます。The dependent project will be built if it has changed since the last time the referencing project was built. ファイル参照ではビルド依存関係が作成されないため、依存プロジェクトをビルドせずに参照元のプロジェクトをビルドできます。したがって、参照が古くなる可能性があります。A file reference does not create a build dependency, so it is possible to build the referencing project without building the dependent project, and the reference can become obsolete. つまり、プロジェクトから、同じプロジェクトの以前にビルドされたバージョンが参照される場合があります。その結果、bin ディレクトリ内に 1 つの DLL の複数のバージョンが求められる場合がありますが、これを実現するのは不可能です。(That is, the project can reference a previously built version of the project.) This can result in several versions of a single DLL being required in the bin directory, which is not possible. この矛盾が生じた場合は、"警告: プロジェクト 'project' の依存関係 'file' は、参照 'file' を上書きするため、実行ディレクトリにコピーできません" などのメッセージが表示されます。When this conflict occurs, you will see a message such as "Warning: the dependency 'file' in project 'project' cannot be copied to the run directory because it would overwrite the reference 'file.'". 詳細については、「壊れた参照のトラブルシューティング」および「方法: プロジェクトの依存関係を作成および削除する」を参照してください。For more information, see Troubleshooting Broken References and How to: Create and Remove Project Dependencies.

注意

あるプロジェクトが対象とする .NET Framework のバージョンが Version 4.5 であり、他のプロジェクトが対象とする .NET Framework が Version 2、3.0、3.5、または 4.0 である場合は、プロジェクト間参照ではなくファイル参照が作成されます。A file reference instead of a project-to-project reference is created if the target version of the .NET Framework of one project is version 4.5, and the target version of the other project is version 2, 3, 3.5, or 4.0.

ファイル参照File References

ファイル参照とは、Visual Studio プロジェクトのコンテキスト外にあるアセンブリへの直接参照です。これは、 [参照マネージャー][参照]タブを使用して作成します。File references are direct references to assemblies outside the context of a Visual Studio project; you create them by using the Browse tab of the Reference Manager. アセンブリまたはコンポーネントだけが手元にあり、それを出力として作成したプロジェクトがない場合は、ファイル参照を使用します。Use a file reference when you just have an assembly or component and don't have the project that creates it as output.

関連項目See Also

壊れた参照のトラブルシューティング Troubleshooting Broken References
方法: 参照マネージャーを使用して参照を追加または削除するHow to: Add or Remove References By Using the Reference Manager