「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開發環境」。例如:
// 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;
[...]
UPDATE。看看MainWindow
報告的是什麼類型的信息,我看到VisualStudio.DTE.9.0
和VisualStudio.DTE.10.0
(VS2010及以上)報告的信息存在差異。
好MainWindow
報告(reference code)參照有效註冊類型庫,以及新的「壞」包含的類型庫{F11EBD51-0035-3612-BFB9-7D9ED680A986}
在Microsoft.VisualStudio.Platform.WindowManagement.dll,這是不註冊,不具備有效的磁盤映像MainWindow
報告(可能會動態創建)。
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
。
相關:http://stackoverflow.com/questions/15210806/how-to-use-dte-in-powershell –
資源管理器有這個偉大的功能,您可以搜索您的硬盤上的任何文件。你嘗試過嗎? – Will
@會感謝您的諷刺評論。我安裝了[Search Everything](http://www.voidtools.com/)引擎,但我一直在搜索'.tlb'文件。不知道'.olb'文件中還提供了類型庫。現在,你知道我如何擺脫'InvokeMember'並直接訪問成員/方法嗎? – Sabuncu