Auto-attaching to aspnet_wp.exe

Dennis van der Stelt asked me how to debug CSModules without using the Community Server SDK. Ok, so here's how I debug my modules.

First I set the output directory of my projects to CS' bin folder. To debug the module, I attach the debugger manually to ASP.NET worker process, aspnet_wp.exe. However, that's not very ergonomic, because you have to go to DebugAttach To Process, select aspnet_wp.exe (fortunately, processes are sorted by their name) and click OK.

However, after a while that gets really annoying.

Therefore I searched for a simpler solution, e.g. an add-in. I stumbled over this nice and short macro, published by Roy Osherove (who else? [;)]):

This was on the win-tech-off-topic mailing list:

A macro to automatically attach to aspnet_wp.exe, written by Kevin Dente can save lots of clicking around time:

Sub AttachAspNet()
    Dim process As EnvDTE.Process
    If Not (DTE.Debugger.DebuggedProcesses Is Nothing) Then
        For Each process In DTE.Debugger.DebuggedProcesses
            If (process.Name.IndexOf("aspnet\_wp.exe") \<\> -1) Then
                Exit Sub
            End If
        Next
    End If
    For Each process In DTE.Debugger.LocalProcesses
        If (process.Name.IndexOf("aspnet\_wp.exe") \<\> -1) Then
            process.Attach()
            Exit Sub
        End If
    Next
End Sub

Unfortunately, it's not perfect. Process.Attach doesn't let you specify the program type (CLR, Script, native, etc). I think that it uses whatever your last selection was in the UI. But don't quote me on that, it's been a while.

I added the macro to a toolbar, so debugging my modules is only one click far. [:)]

Comments