2011-12-21 16 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