我有几个进程正在运行,我想通过powershell连接到VS调试器。
目前,我可以这样做:Get-Process NServiceBus.Host | Debug-Process
如果只有一个进程,则提示我选择正确的调试器,然后我可以继续。
但是,如果有多个进程,当系统提示我为第二个进程选择调试器时,我无法选择当前正在运行的Visual Studio实例。
如何使用powershell将多个进程附加到正在运行的visual studio实例以进行调试?
答案 0 :(得分:5)
获取活动的visual studio实例...
$ dte = [System.Runtime.InteropServices.Marshal] :: GetActiveObject(" VisualStudio.DTE")
...并使其附加到一组进程......
($ dte.debugger.localprocesses | Where Name -Match" proc(one | two).exe")。Attach()
......似乎每次连接之间可能需要延迟,如果它需要太长时间,否则视觉工作室很忙并拒绝接听电话。
答案 1 :(得分:0)
谢谢,软件熊。我无法使您的确切命令行正常工作,但是在添加大括号并在Administrator Powershell提示符下运行后,此命令行已将调试器成功附加到所有正在运行的w3wp.exe进程:
$dte = [System.Runtime.InteropServices.Marshal]::GetActiveObject('VisualStudio.DTE')
$dte.Debugger.LocalProcesses | Where {$_.Name -like '*w3wp.exe'} | %{$_.Attach()}
理想情况下,这可以在Visual Studio中通过按键执行,但是Visual Studio在没有插件的情况下不支持Powershell,并且在VS2010之后删除了Macro编辑器。在this advice之后,我尝试将此ScriptBlock作为“外部工具”添加到powershell.exe命令行中,但是它没有附加调试器,也没有产生任何输出。