在针对外部组件或连接服务编写代码之前,项目必须先包含对它的引用。 引用实质上是项目文件中的条目,其中包含 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 项目上下文之外的程序集。 使用“引用管理器”对话框的 “浏览 ”选项卡创建它们。 如果你只有程序集或组件,但没有创建它们的项目作为输出,请使用文件引用。
NuGet 包引用
若要引用 NuGet 包,请参阅 在 Visual Studio 中安装和使用包。