以编程方式访问项目引用的“嵌入互操作类型”属性

时间:2010-09-25 19:20:26

标签: visual-studio visual-studio-addins visual-studio-sdk

我正在为Visual Studio编写一个插件,我能够看到项目的所有引用的所有属性,除了一个属性。

如何以编程方式访问参考的“嵌入互操作类型”属性?

现在我使用VSLangProj80.Reference3类来获取属性,但它不包含“嵌入互操作类型”属性。

我找到了对Microsoft内部使用枚举的引用,VsProjReferencePropId100.DISPID_Reference_EmbedInteropTypes,但不知道如何使用它来查找我要查找的信息。

1 个答案:

答案 0 :(得分:1)

经过大量的反复试验后,我终于开始工作了。这url指出了我正确的方向。

简而言之。 VsLangProj100.dll不包含Reference4接口,新接口应包含EmbedInteropTypes属性。解决方案是自己制作界面。为此,您必须知道接口,属性,访问说明符和调度ID的GUID。您可以使用OLE / COM对象查看器进行检查。

界面应如下所示,一切正常:

[Guid("F71B6036-80F1-4F08-BC59-B5D92865F629")]
public interface Reference4
{        
    // Reference        
    [DispId(1)] DTE DTE { get; }        
    [DispId(2)] References Collection { get; }        
    [DispId(3)] Project ContainingProject { get; }        
    [DispId(4)] void Remove();        
    [DispId(5)] string Name { get; }        
    [DispId(6)] prjReferenceType Type { get; }        
    [DispId(7)] string Identity { get; }        
    [DispId(8)] string Path { get; }        
    [DispId(9)] string Description { get; }        
    [DispId(10)] string Culture { get; }        
    [DispId(11)] int MajorVersion { get; }        
    [DispId(12)] int MinorVersion { get; }        
    [DispId(13)] int RevisionNumber { get; }        
    [DispId(14)] int BuildNumber { get; }        
    [DispId(15)] bool StrongName { get; }       
    [DispId(16)] Project SourceProject { get; }        
    [DispId(17)] bool CopyLocal { get; set; }        
    [DispId(18), TypeLibFunc(1088)] dynamic get_Extender(string ExtenderName);        
    [DispId(19)] dynamic ExtenderNames { get; }        
    [DispId(20)] string ExtenderCATID { get; }        
    [DispId(21)] string PublicKeyToken { get; }        
    [DispId(22)] string Version { get; }         
    // Reference2        
    [DispId(100)]string RuntimeVersion { get; }         
    // Reference3       
    [DispId(120)] bool SpecificVersion { get; set; }        
    [DispId(121)] string SubType { get; set; }        
    [DispId(122)] bool Isolated { get; set; }       
    [DispId(123)] string Aliases { get; set; }        
    [DispId(124)] uint RefType { get; }       
    [DispId(125)] bool AutoReferenced { get; }     
    [DispId(126)] bool Resolved { get; }        
    // Reference4       
    [DispId(127)] bool EmbedInteropTypes { get; set; }    
}

的Gr

Martijn B

相关问题