References.Add(String) 方法

定义

向项目添加新引用。

public:
 VSLangProj::Reference ^ Add(System::String ^ bstrPath);
public:
 VSLangProj::Reference ^ Add(Platform::String ^ bstrPath);
VSLangProj::Reference Add(std::wstring const & bstrPath);
[System.Runtime.InteropServices.DispId(6)]
public VSLangProj.Reference Add (string bstrPath);
[<System.Runtime.InteropServices.DispId(6)>]
abstract member Add : string -> VSLangProj.Reference
Public Function Add (bstrPath As String) As Reference

参数

bstrPath
String

必需。 COM 或 .NET Framework 引用的路径。 此参数可以采用三种形式:简单的 .NET Framework 对象名称,如 "System"。 ) 的 .NET Framework 文件名 ( .tlb、.dll 或 .ocx 文件。COM 库文件 ( .tlb、.dll、.ocx 或 .exe 文件) 。 对于 COM 对象,路径需要包括完整路径和文件名,如 "D:\SomeApplication\SomeApp.dll"。 请参阅下面的 "COM 引用" 部分中的限制,添加 COM .exe 文件引用。

返回

Reference

返回一个 Reference 对象。

属性

示例

' Macro Editor  
Imports VSLangProj  
Sub AddExample()  
   ' This example assumes that the first project in the solution is   
   ' either a Visual Basic or C# project.  
   Dim aVSProject As VSProject = _  
      CType(DTE.Solution.Projects.Item(1).Object, VSProject)  

   Dim refs As References = aVSProject.References  
   ' Adds a reference to a compiled .NET project.  
   refs.Add("C:\path\program.dll")  
   ' Adds a reference to an installed ActiveX control.  
   refs.Add("C:\WINNT\system32\msmask32.ocx")  
   ' Adds a reference to System.dll as an example of adding a  
   ' reference using just the simple name.  
   refs.Add("System")  
End Sub  

注解

如果参数所指示的文件中不存在任何类型库 bstrPath ,或无法解析引用 (请参阅引用解析部分) 。

如果项目中存在具有与 Identity Culture MajorVersion MinorVersion BuildNumber RevisionNumber 新引用相同的、、、、和的引用,则此方法不会生成错误。 该条件将指示参数指示的引用已 bstrPath 添加到项目中。 相反,将 ProjectItem 返回项目中已存在的匹配引用的。

如果在项目中找到了具有相同的、、、或的引用,则 Identity MajorVersion MinorVersion BuildNumber RevisionNumber Culture 该方法将生成错误。

若要删除引用,请使用 Remove

COM 引用

此方法返回所 Reference 引用文件中第一个类型库的对象。

此方法添加在类型库文件中找到的所有对象以及这些对象的任何依赖项。 因此,对此方法的单个调用可能会导致将多个引用添加到集合中 References

如果 COM .exe 文件包含类型库,则可以将其添加为引用。 在这种情况下,将添加对 .exe 文件中包含的所有已注册类型库的引用。

.NET Framework 引用

此方法返回所 Reference 引用的程序集的对象。

这些引用没有类型库文件,因此,不会将依赖程序集作为引用添加到项目。

如果引用也是具有嵌入类型库的程序集,则只会添加对程序集的引用。

允许对 .NET Framework .exe 文件的引用。

引用解析

保存项目文件时,引用的路径不会保存为项目的一部分。 这样就可以更轻松地在计算机之间共享项目文件。 例如,System.dll 可能存储在计算机 A 上的 C:\Bigfolder 中,并且可能存储在计算机 B 上的 D:\Smallfolder 中。对于 .NET Framework 引用,只保留引用程序集名称。 因此,对于 System.dll,将保留 "System"。

编译器仅接受完整路径和文件名形式的引用,例如 C:\Bigfolder\system.dll。 因此,在设计时必须有一些一致的方法来定位程序集。 如果可以找到程序集的完整路径,则解析程序集。 解析的路径是指向引用的完整路径。 继续系统示例,如果在 C:\Bigfolder 中找到 System.dll,则解析 System.dll 时,将 C:\Bigfolder\System.dll 其解析的路径。

若要解析引用,开发环境会从引用创建搜索名称,然后搜索引用。 将创建搜索名称以使其包含 .dll 扩展名,因为引用的保存名称可能包含也可能不包含 .dll 扩展名。 ReferenceOne 和 ReferenceTwo.dll 两个引用分别具有名称、ReferenceOne.dll 和 ReferenceTwo.dll。

开发环境按下列顺序搜索该名称,并在找到匹配项后立即停止:

  1. 在项目层次结构中。

  2. 在引用搜索路径中,这是一个项目级设置。 有关详细信息,请参阅 ReferencePath

  3. 在枚举引用时,组件选取器使用的目录集中。 安装期间,此目录集存储在注册表中。

加载项目时将解析每个引用。 如果 bstrPath 方法的参数 Add 不是完整路径,也会在新的引用上发生。

如果引用无法解析,则会生成错误。 由于参数中需要完整路径名称,因此将始终解析 COM 引用 bstrPath 。 如果 bstrPath 参数是 .NET Framework 名称 (例如,SomeObject) 或没有路径的 .NET Framework 文件名 (例如,SomeObject.dll) ,则可能无法解析该引用,并且会生成错误。

适用于