gpt4 book ai didi

visual-studio-2010 - EnvDTE 的类型库在哪里?

转载 作者:行者123 更新时间:2023-12-02 23:27:41 26 4
gpt4 key购买 nike

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

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

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

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

EnvDTE 的类型库在哪里?

最佳答案

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

enter image description here

// 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.0 报告的信息之间存在差异和 VisualStudio.DTE.10.0 (VS2010 及更高版本)。

不错 MainWindow报告( reference code)引用了有效的注册类型库,以及更新的“坏” 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 .

关于visual-studio-2010 - EnvDTE 的类型库在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29687793/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com