Reference3 接口

扩展 VSLangProj2 命名空间的 Reference2 接口。

命名空间:  VSLangProj80
程序集:  VSLangProj80(在 VSLangProj80.dll 中)

语法

声明
<GuidAttribute("5021602E-2025-4299-88D2-0A92E8B41ADF")> _
Public Interface Reference3 _
    Inherits Reference2
[GuidAttribute("5021602E-2025-4299-88D2-0A92E8B41ADF")]
public interface Reference3 : Reference2
[GuidAttribute(L"5021602E-2025-4299-88D2-0A92E8B41ADF")]
public interface class Reference3 : Reference2
[<GuidAttribute("5021602E-2025-4299-88D2-0A92E8B41ADF")>]
type Reference3 =  
    interface 
        interface Reference2 
    end
public interface Reference3 extends Reference2

Reference3 类型公开以下成员。

属性

  名称 说明
公共属性 Aliases 获取或设置指定引用的别名。此属性仅应用于 Visual C#。
公共属性 AutoReferenced 获取是否由编译器自动引用该引用。
公共属性 BuildNumber 获取引用的生成号。
公共属性 Collection 获取一个 References 集合。
公共属性 ContainingProject 获取包含该引用的 Project
公共属性 CopyLocal 获取或设置是否将引用复制到本地 bin 路径。
公共属性 Culture 获取引用的区域性字符串。
公共属性 Description 获取引用的文本说明。
公共属性 DTE 获取顶级扩展性对象。
公共属性 Extender 基础结构。 仅由 Microsoft 内部使用。
公共属性 ExtenderCATID 基础结构。 仅由 Microsoft 内部使用。
公共属性 ExtenderNames 基础结构。 仅由 Microsoft 内部使用。
公共属性 Identity 获取引用的唯一标识符。
公共属性 Isolated 获取或设置该 COM 引用是否独立,即没有向 Windows 注册。
公共属性 MajorVersion 获取引用的主版本号。
公共属性 MinorVersion 获取引用的次版本号。
公共属性 Name 获取对象的名称。
公共属性 Path 获取引用文件的路径。
公共属性 PublicKeyToken 从强签名引用中获取公钥标记。
公共属性 RefType 获取引用类型:程序集、COM 或 本机。
公共属性 Resolved 获取当前引用是否已解析。
公共属性 RevisionNumber 获取引用的修订号。
公共属性 RuntimeVersion 获取引用所基于的运行时版本。这仅适用于 .NET 引用。
公共属性 SourceProject 如果引用是一个项目,则获取 Project 对象。否则,它将返回 Nothing(null 对象)。
公共属性 SpecificVersion 获取或设置是否仅使用引用的特定版本。
公共属性 StrongName 获取指示引用是否用公钥/私钥对加以签名的值。
公共属性 SubType 设置或获取程序集子类型。
公共属性 Type 已过时。包含它仅是为了向后兼容。请改用 RefType
公共属性 Version 获取指定引用的版本。

页首

方法

  名称 说明
公共方法 Remove 将引用从包含它的 References 对象中移除。

页首

备注

Reference3 定义下列新参数:

Aliases

AutoReferenced

Isolated

RefType

SpecificVersion

示例

下面的示例向打开的 Visual Basic 或 Visual C# 项目添加两个引用。 然后调用函数 GetRefTypeName 显示引用类型,调用函数 ReportReferences 显示其他引用属性。 若要将此示例作为外接程序运行,请参见如何:编译和运行自动化对象模型代码示例

所添加的引用的默认路径为:对于 adodb.dll 为 <安装根目录>\Program Files\Microsoft.NET\Primary Interop Assemblies,对于 spcommon.dll 为 <安装根目录>\Program Files\Common Files\SpeechEngines\Microsoft。 请将示例中的 <file path> 替换为这些文件路径或其他适当的文件路径。

Imports VSLangProj
Imports VSLangProj2
Imports VSLangProj80
Public Sub OnConnection(ByVal application As Object,_
 ByVal connectMode As ext_ConnectMode, ByVal addInInst As Object, _
 ByRef custom As Array) Implements IDTExtensibility2.OnConnection
    applicationObject = CType(application, DTE2)
    addInInstance = CType(addInInst, AddIn)
    AddNewReference(applicationObject)
End Sub
Sub AddNewReference(ByVal dte As DTE2)
    Dim aProject As Project
    Dim aVSProject As VSProject2
    aProject = applicationObject.Solution.Projects.Item(1)
    aVSProject =_
 CType(applicationObject.Solution.Projects.Item(1).Object, VSProject2)
    ' Add an Assembly reference and display its type and additional
    ' information.
    Dim newRef As Reference3
    ' Replace <file path> with an actual path.
    newRef = aVSProject.References.Add("<file path>\adodb.dll")
    MsgBox("The " & newRef.Name() & " added, is of type:" & vbCr _
    & GetRefTypeName(newRef))
    MsgBox("A report on " & newRef.Name() & ":" & vbCr & _
    ReportReferences(newRef))
    ' Add a COM reference and display its type and a report.
    ' Replace <file path> with an actual path.
    newRef = aVSProject.References.Add("<file path>\spcommon.dll")
    MsgBox("The " & newRef.Name() & " added, is of type:" & vbCr _
    & GetRefTypeName(newRef))
    MsgBox("A report on " & newRef.Name() & ":" & vbCr & _
    ReportReferences(newRef))
End Sub
Private Function GetRefTypeName(ByVal ref As Reference3) _
    As String
    Dim type As String
    Select Case ref.Type
        Case prjReferenceType.prjReferenceTypeActiveX
            type = "COM"
         Case prjReferenceType.prjReferenceTypeAssembly
            type = "Assembly"
    End Select
    Return type
End Function
Function ReportReferences(ByVal aRef As Reference3) As String
    Dim report As String = ""
    Dim type As String
    ' Each entry in the ArrayList contains a label and a value.
    Dim ht As System.Collections.ArrayList = _
    New System.Collections.ArrayList
    With aRef
        ht.Add(New String() {"Name", .Name})
        ht.Add(New String() {"Description", .Description})
        ht.Add(New String() {"Version",  -
        String.Format("{0}.{1}.{2}.{3}", _
        .MajorVersion, .MinorVersion, .BuildNumber, .RevisionNumber)})
        ht.Add(New String() {"Location", .ContainingProject.FullName})
            Select Case .Type
            Case prjReferenceType.prjReferenceTypeActiveX
                type = "COM"
            Case prjReferenceType.prjReferenceTypeAssembly
                type = "Assembly"
            End Select
            ht.Add(New String() {"Type", type})
            ht.Add(New String() {"Culture", .Culture})
    End With
    Dim datas() As String
    For Each datas In ht
        report &= datas(0) & ControlChars.Tab & datas(1) & _
        ControlChars.CrLf
    Next
    Return report
End Function
using System.Windows.Forms;
using VSLangProj;
using VSLangProj2;
using VSLangProj80;
public void OnConnection(object application,
 ext_ConnectMode connectMode, object addInInst, ref Array custom)
{
    applicationObject = (DTE2)application;
    addInInstance = (AddIn)addInInst;
    AddNewReference(((DTE2)applicationObject));
}

public void AddNewReference(DTE2 dte)
{
    Project aProject = null;
    VSProject2 aVSProject = null;
    aProject = applicationObject.Solution.Projects.Item(1);
    aVSProject = 
((VSProject2)(applicationObject.Solution.Projects.Item(1).Object));
    // Add an Assembly reference and display its type and a report.
    Reference3 newRef = null;
    // Replace <file path> with an actual file path.
    newRef = ((Reference3)(aVSProject.References.Add(@"
<file path>\adodb.dll")));
    MessageBox.Show("The " + newRef.Name + " added, is of type:" 
+ "\n" + GetRefTypeName(newRef));
    MessageBox.Show("A report on " + newRef.Name + ":" + "\n" 
+ ReportReferences(newRef)); 
    // Add a COM reference and display its type and a report.
    // Replace <file path> with an actual file path.
    newRef = ((Reference3)(aVSProject.References.Add(@"
<file path>\spcommon.dll")));
    MessageBox.Show("The " + newRef.Name + " added, is of type:" 
+ "\n" + GetRefTypeName(newRef));
    MessageBox.Show("A report on " + newRef.Name + ":" + "\n" 
+ ReportReferences(newRef)); 
}
private string GetRefTypeName(Reference3 refIdent)
{
    string type = null;
    switch (refIdent.Type)
    {
     case prjReferenceType.prjReferenceTypeActiveX:
        type = "COM";
        break;
    case prjReferenceType.prjReferenceTypeAssembly:
        type = "Assembly";
        break;
    }
    return type;
}
public string ReportReferences(Reference3 aRef)
{
    string report = "";
    string type = null;
    // Each entry in the ArrayList contains a label and a value.
    System.Collections.ArrayList ht = 
new System.Collections.ArrayList();
    VSLangProj.Reference temp = aRef;
    ht.Add(new string[] { "Name", temp.Name });
    ht.Add(new string[] { "Description", temp.Description });
   ht.Add(new string[] { "Version", string.Format("{0}.{1}.{2}.{3}"
, temp.MajorVersion, temp.MinorVersion, 
temp.BuildNumber, temp.RevisionNumber) });
    ht.Add(new string[] { "Location", 
temp.ContainingProject.FullName });
    switch (temp.Type)
    {
        case prjReferenceType.prjReferenceTypeActiveX:
            type = "COM";
            break;
        case prjReferenceType.prjReferenceTypeAssembly:
            type = "Assembly";
            break;
    }
    ht.Add(new string[] { "Type", type });
    ht.Add(new string[] { "Culture", temp.Culture });
    string[] datas = null;
    foreach (string[] temp1 in ht)
    {
        datas = temp1; 
        report += datas[0] + "\t" + datas[1] + "\n";
    }
    return report;
}

请参阅

参考

VSLangProj80 命名空间

Reference