在VS2008中,有没有办法自动“附加到进程”?

时间:2009-12-08 09:26:12

标签: c# visual-studio visual-studio-2008 debugging

我正在开发一个有三个项目的解决方案,所有这些项目在我开始调试时都会运行。这很烦人,因为如果我想调试一个不是我的启动项目的特定项目的一个方面,我必须每次都附加这个过程。

有没有办法让调试器自动附加到所有项目?

感谢您的帮助:)

干杯

伊恩

2 个答案:

答案 0 :(得分:18)

为什么不简单地将所有3个项目都设置为启动项目?这样你根本不需要附加?

只需转到属性解决方案,然后选择“多个启动项目”。

答案 1 :(得分:3)

不像Jaco的回答那么优雅(从未意识到你可能有多个启动项目),但可能非常有用。我有一个VS宏:

    Function AttachToProcess(ByVal procname As String, ByVal quiet As Boolean) As Boolean
    Dim attached As Boolean = False
    Dim proc2 As EnvDTE80.Process2

    ' Attaching natively, from http://blogs.msdn.com/jimgries/archive/2005/11/30/498264.aspx '
    Dim dbg2 As EnvDTE80.Debugger2 = DTE.Debugger
    Dim trans As EnvDTE80.Transport = dbg2.Transports.Item("Default")
    Dim dbgeng(1) As EnvDTE80.Engine
    dbgeng(0) = trans.Engines.Item("Native")

    For Each proc2 In DTE.Debugger.LocalProcesses
        If (proc2.Name.Contains(procname)) Then
            proc2.Attach2(dbgeng)
            attached = True
            Exit For
        End If
    Next

    If (attached = False And quiet = False) Then
        MsgBox(procname + " is not running")
    End If
    Return attached
End Function

Sub AttachToMyProcess1()
    AttachToProcess("MyProcess1.exe", True)
End Sub
Sub AttachToMyProcess2()
    AttachToProcess("MyProcess2.exe", True)
End Sub

然后我将AttachToMyProcessX()宏附加到键盘快捷键。这样做的好处是你可以追溯地附加到一个过程:按Ctrl-F5然后连接通常比从F5开始更快。