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

amb*_*ous 2 powershell visual-studio-2010 nuget

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

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

所以我想输入 install.ps1 接受的所有参数

param(
    [Parameter(Mandatory=$true)] [string]   $installPath,
    [Parameter(Mandatory=$true)] [string]   $toolsPath,
    [Parameter(Mandatory=$true)]            $package,
    [Parameter(Mandatory=$true)]            $project
)
Run Code Online (Sandbox Code Playgroud)

设置字符串参数很容易,gowever

项目和包是棘手的

我确实可以访问 nuget cmdlet。我按照这篇文章来实现这一目标。

所以我导入模块 PackageManagement.Cmdlets.dll

一切正常

现在当我尝试类似的事情时

$project = Get-Project -name SmartCom.Registration.Logic
Run Code Online (Sandbox Code Playgroud)

我收到此消息“必须打开项目才能运行此命令。” 所以我想我首先需要通过 DTE 连接到 vs 并打开一个解决方案,然后加载一个项目才能使其正常工作?

我知道 PowerConsole 之类的东西会自动与 vs 挂钩,但在这种情况下,我希望它在 vs 之外工作,以便我可以使用 powershell isa 调试它

有任何想法吗?

x0n*_*x0n 6

假设 Visual Studio 正在运行(并且只有一个实例),那么您可以执行以下操作:

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

Name                   : Microsoft Visual Studio
...
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助。