管理项目引用

在您对外部组件编写代码之前,项目必须首先包含对该组件的引用。可以对以下类型的组件进行引用:

  • Windows 应用商店应用程序引用

  • .NET Framework 类库或程序集

  • COM 组件

  • 同一解决方案中项目的其他程序集或类库

  • XML Web services

有关 XML Web services 引用的更多信息,请参见 Web References

Windows 应用商店应用程序引用

项目引用

面向 Windows 8 的 Windows 应用商店项目无法依赖于 Windows 应用商店项目或面向 Windows 8.1 的二进制文件。

如果在您的应用程序中任何项目面向 Windows 8.1,并且您的应用程序包含 C++ Windows 存储项目,则您需要执行以下步骤:

  1. 将您应用程序中所有项目的目标重定为 Windows 8.1。右击应用程序中的每个项目并选择“重定目标到 Windows 8.1”命令,然后在“查看项目和解决方案更改”对话框中单击“确定”。

  2. 右击基于 C++ Windows 应用商店项目的所有 Visual Basic、Visual C# 和 JavaScript 项目,然后选择“添加引用”,转到“Windows”选项卡,然后选择“扩展”子选项卡,取消选中“Microsoft Visual C++ Runtime Package v11.0”,选中“Microsoft Visual C++ Runtime Package v12.0”,然后单击“确定”。

面向 Windows 8.1 的 Visual Basic、C# 和 JavaScript Windows 应用商店项目可以引用面向 Windows 8 的 Visual Basic 和 C# Windows 应用商店项目,条件是这些项目不使用 Windows 8.1 中已弃用的 API。请参见 Migrating Windows 8 apps to Windows 8.1 Preview(将 Windows 8 应用程序迁移到 Windows 8.1 预览版中),以确认以 Windows 8 为目标的 Windows 应用商店项目从 Windows 8.1 项目中引用时是否仍按预期方式工作。

扩展 SDK 引用

面向 Windows 8.1 的 Visual Basic、C#、C++ 和 JavaScript Windows 应用商店项目不能引用依赖于 Microsoft Visual C++ 运行时程序包 v11.0 的扩展 SDK,因为这将导致运行时问题。通过创建新的 C# Windows 应用商店项目,右击该项目并选择“添加引用”,依次转到“窗口”选项卡和“扩展”子选项卡,选择扩展 SDK 并查看“引用管理器”的右面板是否将“Microsoft.VCLibs, version = 11.0”列为依赖项,您就可以了解扩展 SDK 是否依赖于 Microsoft Visual C++ 运行时程序包 v11.0。

面向 Windows 8.1 的 Visual Basic、C# 和 JavaScript Windows 应用商店项目可以引用不依赖于 Microsoft Visual C++ 运行时程序包 v11.0 的扩展 SDK,只要这些扩展 SDK 不使用 Windows 8.1中已弃用 的 API。请检查扩展 SDK 供应商站点以查明该站点是否可被以 Windows 8.1 为目标的 Windows 应用商店项目引用。

如果您要确定应用程序正在引用的扩展 SDK 不受支持,则需要执行以下步骤:

  1. 查看引起错误的项目名称。项目名称旁的括号中注明了你的项目所面向的平台。例如,“MyProjectName (Windows 8.1)”表示您的项目 MyProjectName 面向平台版本 Windows 8.1。

  2. 转到拥有不支持的扩展 SDK 的供应商网站并安装具有依赖项的扩展 SDK 版本,这些依赖项与项目面向的平台相兼容。

    说明说明

    查看扩展 SDK 在其他扩展 SDK 上是否具有依赖项的方法之一是重启 Visual Studio,创建一个新的 C# Windows 应用商店项目,右键单击项目并选择“添加引用”,转到“Windows”选项卡,转到“扩展”子选项卡,选择扩展 SDK,然后查看“引用管理器”的右窗格。如果具有依赖项,就会被列于此处。

    重要说明重要事项

    如果您的项目是面向 Windows 8.1,并且之前步骤安装的扩展 SDK 对 Microsoft Visual C++ 运行时程序包有依赖,则与 Windows 8.1 兼容的 Microsoft Visual C++ 运行时程序包的版本是 v12.0 并且与 Visual Studio 2013 一同安装。

  3. 如果您在前面步骤中安装的 Extension SDK 拥有对其他 Extension SDK 的依赖项,则转到拥有依赖项的供应商网站,然后安装与项目面向的平台版本相兼容的这些依赖项版本。

  4. 重新启动 Visual Studio 并打开应用程序。

  5. 右击导致该错误的项目并选择“添加引用”(Visual Basic、C# 或 JavaScript 项目中),或“引用”(C++ 项目中)。对于 C++ 项目,请单击“添加新引用”按钮。

  6. 单击 Windows 选项卡,然后单击“扩展”子选项卡,然后取消选中旧的扩展 SDK 的复选框,然后选中新的扩展 SDK 的复选框。单击“确定”。

在设计时添加引用

要在设计时添加一个或多个引用,你可以使用“引用管理器”对话框或“添加引用”对话框,具体取决于你生成的项目的类型。可以为所有 Windows 应用商店 应用程序和大多数其他类型的项目使用引用管理器对话框。有关详细信息,请参阅 如何:使用引用管理器添加或移除引用。几个其他项目类型支持“添加引用”对话框。有关详细信息,请参阅 如何:使用“添加引用”对话框添加或移除引用

可以使用“添加引用”对话框浏览至未列出的程序集。请勿从全局程序集缓存 (GAC) 添加引用,因为它完全是运行时环境的一部分。

在对项目中的程序集进行引用时,Visual Studio 会在下列位置搜索程序集:

  • 当前项目目录。(可以使用“浏览”选项卡查找这些程序集。)

  • 同一解决方案中的其他项目目录。(可以在“项目”选项卡上查找这些程序集。)

有关在设计时如何添加引用的更多信息,请参见如何:使用“添加引用”对话框添加或移除引用

说明说明

所有项目都包含对 mscorlib 的隐式引用。Visual Basic 项目包含对 Microsoft.VisualBasic 的隐式引用。

在 Visual Studio 2010 中,所有项目都包含对 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 版本 4 的项目或程序集的引用。

有关详细信息,请参阅 面向特定的 .NET Framework 版本或配置文件

项目到项目的引用和文件引用

文件引用是对程序集的直接引用;可使用“添加引用”对话框的“浏览”选项卡创建这种引用。项目到项目的引用是对包含程序集的项目的引用;可使用“添加引用”对话框的“项目”选项卡创建这种引用。

项目到项目的引用的好处在于,它在生成系统中创建了项目之间的依赖项。因此,如果从上次生成引用项目之后它发生了变化,就会生成依赖项目。文件引用则不建立版本的依赖关系,因此有可能生成了引用项目而没有生成依赖项目,于是引用会变得过时。(即项目能引用该项目以前生成的版本。)这会导致在 bin 目录中要求提供单个 DLL 的几个版本,这是不可能的。发生此冲突时,您将看到诸如警告:不能将项目“<项目>”中的依赖项“<文件>”复制到运行目录,因为它将改写引用“<文件>”。的消息。

应当避免添加对同一解决方案中另一个项目的输出的文件引用,因为这样做可能导致编译错误。而应使用“添加引用”对话框的“项目”选项卡在同一解决方案内部创建项目到项目的引用。这样就可以更好地管理在项目中创建的类库,从而更易于进行团队开发。有关更多信息,请参见有关无效的引用的疑难解答如何:创建和移除项目依赖项

说明说明

如果一个项目的 .NET Framework 目标版本为版本 4.5,而另一个项目的目标版本为版本 2、3、3.5 或 4.0,则将创建文件引用而不是项目引用。

Web 引用

还可以使用“添加 Web 引用”对话框添加 Web 引用。有关详细信息,请参阅 How to: Add and Remove Web References

请参见

任务

有关无效的引用的疑难解答

如何:使用“添加引用”对话框添加或移除引用

概念

如何:使用引用管理器添加或移除引用

其他资源

Referencing Namespaces and Components

Managing References

使用程序集编程