管理项目引用
在外部组件编写代码,您的项目必须首先包含对该元素。 可以对以下类型的组件进行引用:
.NET Framework 类库或程序集
COM 组件
同一解决方案中项目的其他程序集或类库
XML Web services
有关 XML Web services 引用的更多信息,请参见 Web References。
在设计时添加的引用
若要添加一个或多个引用在设计时,可以使用 引用管理器 对话框或 添加引用 对话框中,项类型进行编译。 您可以为所有 Windows 应用商店 apps 和项目的大多数其他类型使用引用管理器"对话框。 有关更多信息,请参见如何:使用引用管理器添加或移除引用。 几个其他项类型支持 添加引用 对话框。 有关更多信息,请参见如何:使用“添加引用”对话框添加或移除引用。
可以使用 添加引用 对话框浏览到未列出的程序集。 因为它完全是运行时环境的某些部分时,无法添加从 全局程序集缓存 (gac) 引用。
在对项目中的程序集进行引用时,Visual Studio 会在下列位置搜索程序集:
当前项目目录。 (可以使用**“浏览”**选项卡查找这些程序集。)
同一解决方案中的其他项目目录。 (可以在**“项目”**选项卡上查找这些程序集。)
有关在设计时如何添加引用的更多信息,请参见如何:使用“添加引用”对话框添加或移除引用。
备注
所有项目都包含对 mscorlib 的隐式引用。Visual Basic 项目包含对 Microsoft.VisualBasic 的隐式引用。
在 Visual Studio 的所有项目都包含对的隐式引用 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。