EnvDTE的类型库在哪里?

萨本库

我在PowerShell脚本中使用EnvDTE来自动化Visual Studio2010。这是我使用的代码的片段:

[void][System.Reflection.Assembly]::LoadWithPartialName("EnvDTE") # (Obsolete!) 

$DTE.MainWindow | %{$_.gettype().InvokeMember("Visible","SetProperty",$null,$_,$true)}

据我了解,这是“后期绑定”代码。根据我的研究,我认为我需要EnvDTE程序集的类型库,以便可以在PowerShell中使用代码,从而使我可以直接访问COM对象的方法/成员,而不必使用InvokeMember

EnvDTE的类型库在哪里?

罗曼·R。

“ dte * .olb”是位于C:\ Program Files(x86)\ Common Files \ Microsoft Shared \ MSEnv \中的注册类型库(更确切地说,可以在注册表LIBIDusign中查找相应路径,例如,在HKEY_CLASSES_ROOT \ TypeLib {80CC9F66中-E7D8-4DDD-85B6-D9E6CD0E93E2} \ 8.0 \ 0 \ win32)。类型库名称为“ Microsoft开发环境”。例如:

在此处输入图片说明

// Generated .IDL file (by the OLE/COM Object Viewer)
// 
// typelib filename: dte80a.olb

[
  uuid(80CC9F66-E7D8-4DDD-85B6-D9E6CD0E93E2),
  version(8.0),
  helpstring("Microsoft Development Environment 8.0 (Version 7.0 Object Model)")
]
library EnvDTE // <<----------------
{
    // TLib :     // TLib : OLE Automation : {00020430-0000-0000-C000-000000000046}
    importlib("stdole2.tlb");

    // Forward declare all types defined in this typelib
    interface _DTE;
    interface Windows;
    interface Window;
    [...]

更新。看一下什么类型的信息MainWindow报告,我看到了VisualStudio.DTE.9.0VisualStudio.DTE.10.0(VS2010及更高版本)报告的信息之间的区别

MainWindow报告(参考代码)引用有效的注册类型库,而较新的“坏”MainWindow报告包含{F11EBD51-0035-3612-BFB9-7D9ED680A986}Microsoft.VisualStudio.Platform.WindowManagement.dll中的类型库,该文件未注册且没有有效的磁盘映像(可能是动态创建的)。

Trying VisualStudio.DTE.9.0
nTypeInfoCount 1
pTypeInfo 0x005CAF8C
pTypeLib 0x005CB064, nTypeLibIndex 67
sName "EnvDTE80", sDocumentation "Microsoft Development Environment 8.0"
pLibAttr->guid {1A31287A-4D7D-413E-8E32-3B374931BD89}, lcid 0x0000, syskind 1, wMajorVerNum 8, wMinorVerNum 0, wLibFlags 0x8
vVisible.vt 0xB

Trying VisualStudio.DTE.10.0
nTypeInfoCount 1
pTypeInfo 0x005CB1CC
pTypeLib 0x005CB2A4, nTypeLibIndex 8
sName "Microsoft_VisualStudio_Platform_WindowManagement", sDocumentation "Microsoft.VisualStudio.Platform.WindowManagement.dll"
pLibAttr->guid {F11EBD51-0035-3612-BFB9-7D9ED680A986}, lcid 0x0000, syskind 1, wMajorVerNum 10, wMinorVerNum 0, wLibFlags 0x0
vVisible.vt 0xB

看来PowerShell无法使用此类型的信息,并且您唯一的解决方法是使用InvokeHelper

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章