在的NuGet的軟件包管理器控制檯在Visual Studio中(我用的2010旗艦版),下面的代碼工作,併成功激活工具箱窗口:差異觀察到的B/W NuGet包管理器控制檯和滑動PowerShell控制檯
$dte.windows.Item("{B1E99781-AB81-11D0-B683-00AA00A3EE26}").activate()
但是,相同的代碼在獨立的PowerShell控制檯會話中不起作用。下面是我使用的腳本:
# Note: Start PowerShell console with the -STA switch.
# Get reference to VS2010 automation object (COM).
$DTE = New-Object -ComObject VisualStudio.DTE.10.0
$DTE.Solution.Open("C:\wfa1\wfa1.sln")
$DTE.MainWindow | %{$_.gettype().InvokeMember("Visible","SetProperty",$null,$_,$true)}
$DTE.Windows.Item("{B1E99781-AB81-11D0-B683-00AA00A3EE26}").Activate()
$DTE.Quit()
我得到的錯誤:
方法調用失敗,因爲[系統.__ ComObject]不包含 一個名爲「項」的方法。
在C:\用戶\ AMS \桌面\ ATS \ AddTypeSample.ps1:114字符:18
+ $ DTE.Windows.Item < < < <(「{B1E99781-AB81-11D0-B683-00AA00A3EE26} 「).Activate()
+ CategoryInfo:InvalidOperation:(項目:字符串)[],的RuntimeException
+ FullyQualifiedErrorId:MethodNotFound
我知道的NuGet的Preps其控制檯,以便,例如,在$dte
variab le可以立即使用,而無需執行任何操作。我如何設置我的PS腳本,以使命令能夠像NuGet控制檯一樣無縫工作?
我在Windows 7旗艦版上使用PowerShell版本2。
(注意:完全不熟悉NuGet)在這兩種情況下,'$ dte.Windows'是什麼? –
@EtanReisner NuGet控制檯中'$ dte.Windows'的輸出是一系列以'AutoHides'開始並以'OutstandingEventCount'結尾的重複屬性;在PowerShell控制檯中,輸出是「System .__ ComObject」重複九次。 – Sabuncu
'$ dte.windows [0] .gettype()'怎麼辦? (我假設它是重複數組)。 –