【问题标题】:Access "Embed Interop Types" property of a project reference programatically以编程方式访问项目引用的“嵌入互操作类型”属性
【发布时间】:2010-09-25 19:20:25
【问题描述】:

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

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

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

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

【问题讨论】:

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


    【解决方案1】:

    经过大量的反复试验,我终于让它工作了。这个url 为我指明了正确的方向。

    简而言之。 VsLangProj100.dll 不包含 Reference4 接口,新接口应包含 EmbedInteropTypes 属性。解决方案是自己制作接口。为此,您必须知道接口的 GUID、属性、访问说明符和调度 ID。您可以使用 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

    马丁·B

    【讨论】:

      猜你喜欢
      • 2022-08-15
      • 2017-10-12
      • 1970-01-01
      • 1970-01-01
      • 2022-06-17
      • 2018-06-10
      • 2023-01-10
      • 2010-09-10
      • 1970-01-01
      相关资源
      最近更新 更多