2011-12-21 13 views
2

如何獲取當前運行的Visual Studio實例的實例? 我需要訪問Visual Studio以外的Visual Studio對象模型(DTE)。從powershell獲取正在運行的Visual Studio實例(DTE)的句柄

我想運行的NuGet從PowerShell ISE中安裝腳本 - 才能夠更好地unerstand什麼腳本在做什麼,爲什麼它沒有做什麼,我希望

所以我想在安裝的所有參數養活的.ps1發生在

PARAM( [參數(強制性= $真)] [字符串] $ INSTALLPATH, [參數(強制性= $真)] [字符串] $ toolsPath, [參數(強制性= $真)] $ package, [Parameter(Mandatory = $ true)] $ project )

可以很容易地設置字符串參數,gowever

項目和包都是棘手的那些

我也有機會獲得的NuGet的cmdlet。我跟着this發帖實現了。

於是我進口模塊PackageManagement.Cmdlets.dll

這一切工作正常

現在,當我試圖像

$項目=獲取項目-name SmartCom.Registration.Logic

我收到此消息「項目必須打開才能運行此命令。」所以我想我首先需要通過DTE掛鉤vs並打開一個解決方案,然後加載一個項目才能使其工作?

我知道,有些事情就像是PowerConsole掛鉤與VS自動,但在這種情況下,我希望它的工作外VS,所以我可以用powershel ISA

任何想法調試呢?

回答

1

鏈接到的帖子使用SharpDevelop來允許在Visual Studio之外使用NuGet PowerShell cmdlet。它沒有依賴於Visual Studio,所以我不相信打開Visual Studio的實例會幫助你。

由於目前沒有解決方案,因此顯示錯誤。要打開一個解決方案,您可以使用設置項目的cmdlet:

set-project MyProject d:\Projects\MyProject\MySolution.sln 

那麼你應該能夠調用獲得項目 cmdlet的。

+0

工作就像一個魅力,歡呼聲。 – ambidexterous 2011-12-21 20:53:55

4

假設Visual Studio中運行(而且也只有一個實例),那麼你可以這樣做:

PS> $dte = [runtime.interopservices.marshal]::GetActiveObject("visualstudio.dte") 
PS> $dte 

Name     : Microsoft Visual Studio 
... 

希望這有助於。

+0

謝謝,這很有用 – ambidexterous 2011-12-21 20:30:59