项目引用(转载)
为了依据外部组件编写代码,您的项目必须首先包含对该组件的引用。可以对以下类型的组件进行引用:
-
.NET Framework 类库或程序集
-
COM 组件
-
同一解决方案中项目的其他程序集或类库
-
XML Web services
有关 XML Web services 引用的更多信息,请参见 Web 引用。
Visual Basic 注意 |
---|
在 Visual Studio 中管理项目引用的方式与在 Visual Basic 6.0 中不同。有关更多信息,请参见 适用于 Visual Basic 6.0 用户的项目管理。 |
在设计时添加引用
在设计时可使用“添加引用”对话框添加对组件的引用。
“添加引用”对话框列出了位于下列位置的程序集:
-
Public Assemblies 文件夹 (Program Files\Microsoft Visual Studio .NET\Common7\IDE\Public Assemblies)。
如果将其他程序集复制到 Public Assemblies 文件夹,则这些程序集会显示在“添加引用”对话框中的列表中。
-
已通过设置引用路径指定的文件夹。
为 Visual C# 和 Visual J# 项目设置引用路径的过程稍有不同。在 Visual Basic 项目中,是单击“引用路径”按钮调出“添加引用”对话框。而在 Visual C# 或 Visual J# 项目中,则使用的是“项目设计器”的项目设计器 ->“引用路径”页(C#、J#)。有关更多信息,请参见如何:设置引用路径(C#、J#)。
还可以使用“添加引用”对话框直接浏览至未列出的程序集。不能从全局程序集缓存 (GAC) 添加引用,因为它完全是运行时环境的一部分。
在对项目中的程序集进行引用时,Visual Studio 会在下列位置搜索程序集:
-
当前项目目录(可以使用“浏览”选项卡找到这些程序集)。
-
同一解决方案内的其他项目目录(可以在“项目”选项卡中找到这些程序集)。
-
Public Assemblies 文件夹:Program Files\Microsoft Visual Studio .NET\Common7\IDE\Public Assemblies;(可以在“.NET”选项卡中找到这些程序集)。
-
已通过设置引用路径指定的文件夹(可以使用“引用路径”对话框 (Visual Basic) 或项目设计器 ->“引用路径”页(C#、J#)设置引用路径)。
有关在设计时添加引用的更多信息,请参见如何:在 Visual Studio 中添加或移除引用。
运行时对共享组件的引用
在运行时,组件必须位于项目的输出路径或全局程序集缓存 (GAC) 中。如果项目包含对某对象的引用而该对象不在这两个位置中的任何一个位置,则在生成项目时,必须将该引用复制到项目的输出路径。CopyLocal 属性指示是否需要进行此复制。如果值为“True”,则在生成项目时,会将引用复制到项目目录中。如果为“False”,则不复制引用。
如果部署包含对自定义组件(该组件在 GAC 中注册)的引用的应用程序,则组件将不会与应用程序一起部署(不管 CopyLocal 的设置如何)。在早期的 Visual Studio 版本中,可以对引用设置 CopyLocal 属性以确保部署程序集。现在必须手动将程序集添加到 \Bin 文件夹中。这样您就可以对所有自定义代码进行检查,以减少发布您不熟悉的自定义代码的风险。
默认情况下,如果程序集或组件位于全局程序集缓存中或者是框架组件,则 CopyLocal 属性设置为“False”。否则,该值将设置为“True”。对于项目到项目的引用,该值始终设置为“True”。
项目到项目的引用和文件引用
文件引用是对程序集的直接引用;可使用“添加引用”对话框的“浏览”选项卡创建这种引用。项目到项目的引用是对包含程序集的项目的引用;可使用“添加引用”对话框的“项目”选项卡创建这种引用。
项目到项目的引用的好处在于,它在生成系统中创建了项目之间的依赖项,因而如果从上次生成引用项目之后它发生了变化,就会生成依赖项目。文件引用则不创建生成依赖项,因此有可能生成了引用项目而没有生成依赖项目,于是引用会变得过时(即一个项目能引用该项目以前的生成版本)。这会导致在 bin 目录中要求提供单个 DLL 的几个版本,这是不可能的。发生此冲突时,您将看到诸如警告:不能将项目“project”中的依赖项“file”复制到运行目录,因为它将改写引用“file”。的消息。
应当避免添加对同一解决方案中另一个项目的输出的文件引用,因为这样做可能导致编译错误。而应使用“添加引用”对话框的“项目”选项卡在同一解决方案内部创建项目到项目的引用。这样就可以更好地管理在项目中创建的类库,从而更易于进行团队开发。有关更多信息,请参见有关无效的引用的疑难解答和如何:创建和移除项目依赖项。
Web 引用
还可以使用“添加 Web 引用”对话框添加 Web 引用。有关更多信息,请参见如何:添加和移除 Web 引用。