在针对外部组件或连接服务编写代码之前,项目必须先包含对它的引用。 引用实质上是项目文件中的条目,其中包含 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 运行时 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,前提是这些扩展 SDK 不使用已在 Windows 10 及更高版本中弃用的 API。 检查扩展 SDK 供应商站点,了解是否可以由 UWP 应用引用它。
如果确定应用引用的扩展 SDK 不受支持,则需要执行以下步骤:
查看导致错误的项目的名称。 项目目标的平台在项目名称旁的括号中记录。 例如, MyProjectName (Windows 8.1) 表示项目 MyProjectName 面向平台版本 Windows 8.1。
请访问拥有未受支持扩展 SDK 的供应商网站,并安装与您的项目所针对的平台版本兼容的依赖项版本的扩展 SDK。
注释
了解扩展 SDK 是否依赖于其他扩展 SDK 的一种方法是在 参考管理器中查找。 重启 Visual Studio,创建新的 C# UWP 应用项目,然后右键单击项目并选择 “添加引用”。 转到 “Windows ”选项卡,然后选择“ 扩展 ”子选项卡,然后选择“扩展 SDK”。 查看 引用管理器中的右窗格。 如果它具有依赖项,则会在其中列出它们。
重要
如果你的项目专门面向 Windows 10,且在上一步中安装的扩展 SDK 依赖于 Microsoft Visual C++ 运行时包,则与 Windows 10 兼容的 Visual C++ 运行时包 Microsoft的版本为 v14.0,并且随 Visual Studio 一起安装。
如果在上一步中安装的扩展 SDK 依赖于其他扩展 SDK,请转到拥有依赖项的供应商站点,然后安装与项目所面向的平台版本兼容的这些依赖项的版本。
重启 Visual Studio 并打开应用。
右键单击项目中导致错误的 “引用 ”或“ 依赖项 ”节点,然后选择“ 添加引用”。
选择 Windows 选项卡,然后选择 “扩展 ”子选项卡,取消选中旧扩展 SDK 的复选框,然后选中新扩展 SDK 的复选框。 选择“确定”。
在设计时添加引用
对项目中的程序集进行引用时,Visual Studio 将在以下位置搜索程序集:
当前项目目录。 (可以使用 “浏览 ”选项卡找到这些程序集。
同一解决方案中的其他项目目录。 (可以在“ 项目 ”选项卡上找到这些程序集。
注释
- 所有项目都包含对 mscorlib 的隐式引用。
- 所有项目都包含对
System.Core
的隐式引用,即使System.Core
从引用列表中删除也是如此。 - Visual Basic 项目包含对 Microsoft.VisualBasic 的隐式引用。
运行时对共享组件的引用
在运行时,组件必须位于项目的输出路径或全局程序集缓存 (GAC) 中。 如果项目包含对不在其中一个位置中的对象的引用,则必须在生成项目时复制对项目的输出路径的引用。 该 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 目录中需要多个版本的单个 DLL,这是不可能的。 发生此冲突时,会出现一条消息,例如“警告:项目”project“中的依赖项”file“无法复制到运行目录,因为它会覆盖引用'file'。有关详细信息,请参阅 对损坏的引用 和 作方法进行故障排除:创建和删除项目依赖项。
注释
如果一个项目的 .NET Framework 目标版本为 4.5,而另一个项目的目标版本为 2、3、3.5 或 4.0,则会创建文件引用,而不是项目到项目引用。
共享项目引用
与大多数其他项目类型不同, 共享项目 没有任何二进制输出。 而是将代码编译到引用它的每个项目中。 使用共享项目可以编写许多不同应用程序项目引用的常见代码。 该代码作为每个引用项目的一部分进行编译,可以包含编译器指令,以帮助将特定于平台的功能合并到共享代码库中。 在“引用管理器”对话框的“ 共享项目 ”选项卡上添加对共享项目的引用。
文件引用
文件引用是直接引用 Visual Studio 项目上下文之外的程序集。 使用“引用管理器”对话框的 “浏览 ”选项卡创建它们。 如果你只有程序集或组件,但没有创建它们的项目作为输出,请使用文件引用。