References.Add 方法
更新:2007 年 11 月
向项目添加新的引用。
命名空间: VSLangProj
程序集: VSLangProj(在 VSLangProj.dll 中)
语法
声明
Function Add ( _
bstrPath As String _
) As Reference
用法
Dim instance As References
Dim bstrPath As String
Dim returnValue As Reference
returnValue = instance.Add(bstrPath)
Reference Add(
string bstrPath
)
Reference^ Add(
[InAttribute] String^ bstrPath
)
function Add(
bstrPath : String
) : Reference
参数
bstrPath
类型:System.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 对象。
备注
如果 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。因此,在设计时必须用一种统一的方法来定位程序集。如果程序集的完整路径能被定位,则可以解析程序集。“解析路径”是引用的完整路径。继续以 System 为例,如果在 C:\Bigfolder 下找到 System.dll,则当解析 System.dll 时,其解析路径便是 C:\Bigfolder\System.dll。
为了解析引用,开发环境将从该引用创建搜索名,然后搜索该引用。创建搜索名是为了让它包含 .dll 扩展名,因为已保存的引用名可能包含也可能不包含 .dll 扩展名。ReferenceOne 和 ReferenceTwo.dll 这两个引用的名称将分别为 ReferenceOne.dll 和 ReferenceTwo.dll。
开发环境按以下顺序搜索相应的名称,一找到匹配项便停止搜索:
在项目层次结构中。
在引用搜索路径中,它是一个项目级设置。有关更多信息,请参见 ReferencePath。
在组件选择器枚举引用时所使用的一组目录中。该组目录在安装时存储到注册表中。
在加载项目时解析每个引用。当 Add 方法的 bstrPath 参数不是完整路径时,也会发生对新引用的解析。
如果某个引用不能被解析,则生成错误。COM 引用始终会被解析,因为 bstrPath 参数中需要完整路径名。如果 bstrPath 参数是 .NET Framework 名(例如 SomeObject)或不带路径的 .NET Framework 文件名(例如 SomeObject.dll),则可能无法解析引用,并生成错误。
示例
' 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
权限
- 对直接调用方的完全信任。此成员不能由部分信任的代码使用。有关更多信息,请参见通过部分受信任的代码使用库。