从powershell获取正在运行的Visual Studio实例(DTE)的句柄



如何获得当前正在运行的Visual Studio实例的实例?我需要在Visual Studio之外访问Visual Studio对象模型(DTE)。

我想从powershell ise运行一个nuget安装脚本-以便能够更好地理解脚本正在做什么以及为什么它没有做我期望的

所以我想输入安装的所有参数。Ps1接收

param(
    [Parameter(Mandatory=$true)] [string]   $installPath,
    [Parameter(Mandatory=$true)] [string]   $toolsPath,
    [Parameter(Mandatory=$true)]            $package,
    [Parameter(Mandatory=$true)]            $project
)

设置字符串参数很容易,但是

project和package是比较棘手的

我可以访问nuget cmdlet。我遵循这篇文章来实现这个目标。

所以我导入-module packagmanagement . cmdlets .dll

一切正常

现在当我尝试输入

$project = Get-Project -name SmartCom.Registration.Logic

我得到这个消息"必须打开一个项目来运行这个命令。"所以我想我首先需要通过DTE连接到vs,打开一个解决方案,然后加载一个项目,以便这个工作?

我知道有像PowerConsole这样的东西可以自动连接vs,但在这种情况下,我想让它在vs之外工作,这样我就可以用powershell isa

来调试它。

任何想法?

假设Visual Studio正在运行(并且只有一个实例),那么您可以这样做:

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

您链接到的帖子使用SharpDevelop允许在Visual Studio之外使用NuGet PowerShell cmdlet。它不依赖于Visual Studio,所以我不相信打开一个Visual Studio实例会对你有帮助。

由于当前没有打开的解决方案而显示错误。要打开一个解决方案,可以使用set-project cmdlet:

    set-project MyProject d:ProjectsMyProjectMySolution.sln

那么您应该能够调用get-project cmdlet

最新更新