是否有人知道Visual Studio 2010加载项会自动允许您附加到ASP.Net开发服务器的运行实例?如果当前有多个正在运行,请显示一个快速对话框,让您从仅运行的ASP.Net开发服务器列表中进行选择?
我为什么要这个? < - 随意跳过这一部分. 我通常开发/调试Web应用程序的方法是启动浏览器并浏览应用程序,直到我到达我想要的页面(可能有很多页面.)我不希望通过这些步骤附加调试器以用于各种原因(它比没有连接慢,可能会遇到无关的断点,我可能会在“抛出”打开时打破,并且在处理错误被抛出时不想在应用程序中提前中断等等…) 我导航到我想要的页面,然后使用Visual Studio菜单调试>附加到Process,然后从Attach to Process对话框中,我必须一直向下滚动(页面和页面以及进程页面),直到找到我想要的WebDev.WebServer40.EXE进程并选择它.
这样做让我把手从键盘上移开并使用鼠标(我通常会尽量避免使用鼠标.)
这样做似乎是不必要的重复,因为如果我正在调试ASP.Net Web应用程序,我总是想附加到WebDev.WebServer40.exe的实例.
解决方法
我更喜欢做同样的事情,并且可以将它全部绑定到带有宏的击键.
转到工具>宏>宏IDE
- Imports System
- Imports EnvDTE
- Imports EnvDTE80
- Imports EnvDTE90
- Imports EnvDTE90a
- Imports EnvDTE100
- Imports System.Diagnostics
- Imports System.Collections.Generic
- Public Module AttachingModule
- Sub AttachToAspNET()
- Try
- Dim process As EnvDTE.Process
- Dim listProcess As New List(Of String)
- '' // uncomment the processes that you'd like to attach to. I only attach to cassini
- '' // listProcess.Add("aspnet_wp.exe")
- '' // listProcess.Add("w3wp.exe")
- listProcess.Add("webdev.webserver")
- For Each process In DTE.Debugger.LocalProcesses
- For Each procname As String In listProcess
- If process.Name.ToLower.IndexOf(procname) <> -1 Then
- process.Attach()
- End If
- Next
- Next
- Catch ex As System.Exception
- MsgBox(ex.Message)
- End Try
- End Sub
- End Module
点击工具>选项
点击环境>键盘
我把宏放在MyMacros中,所以我在“Show Commands Containing”文本框中查找“Macros.MyMacros.AttachingModule.AttachToAspNET”.
我更喜欢使用Ctrl Alt D,但在“按快捷键”文本框中输入您想要的任何内容,然后单击“分配”,然后单击“确定”
现在,您只需按Ctrl Alt D即可附加到所有cassini实例.
我已经在互联网上看到了各种版本,而this是我发现的最新版本.我不得不稍微修改一下以删除额外的Web进程并从WebDev.WebServer.exe中删除.exe,以便调试.net 4.0的cassini实例.