自动附加到开发服务器的 Visual Studio 加载项

Posted

技术标签:

【中文标题】自动附加到开发服务器的 Visual Studio 加载项【英文标题】:Visual Studio Add-In To Automatically Attach to Development Server 【发布时间】:2011-11-28 12:49:02 【问题描述】:

是否有人知道 Visual Studio 2010 加载项会自动允许您附加到正在运行的 ASP.Net 开发服务器实例?如果当前有多个正在运行,则显示一个快速对话框,让您从列表中选择只是正在运行的 ASP.Net 开发服务器?

我为什么要这个? 请随意跳过这部分。

我通常开发/调试 Web 应用程序的方式是启动浏览器并在应用程序中导航,直到到达我想要的页面(可能有很多页面。)我不想通过这些附加调试器出于各种原因的步骤(它比不附加它要慢,可能会遇到无关的断点,当“抛出”打开时我可能会中断,并且在抛出处理的错误时不想在应用程序中更早中断,等等。 .)

我导航到我想要的页面,然后使用 Visual Studio 菜单调试 > 附加到进程,然后从附加到进程对话框中,我必须一直向下滚动(页面和页面以及进程页面) 直到找到我想要的 WebDev.WebServer40.EXE 进程并选择它。

这样做让我把手从键盘上移开并使用鼠标(我通常会尽量避免这样做。)

而且这样做似乎是不必要的重复,因为如果我正在调试 ASP.Net Web 应用程序,我总是想附加到 WebDev.WebServer40.exe 的实例。

【问题讨论】:

除非您想附加到 WebDev.WebServer20.exe、w3wp.exe、iisexpress.exe 或 aspnet_wp.exe 的实例。 如果加载项过滤到这些选项,我会很高兴。 (或者,更好的是,它足够聪明,可以读取项目设置并自动知道该项目在哪里运行。) 我没有看到关于“提示”的部分,但是将此功能添加到我的答案中会很容易。您只需要查找命令即可完成提示等,但您需要的所有信息都在那里! 艾伦,你的回答很好。标记为已接受。谢谢! 最好有一个命令“附加到您上次附加的相同进程”,您绝对可以作为插件执行此操作(实际上我想我会这样做我自己)并通过工具 -> 选项 -> 环境 -> 键盘为其附加一个全局键和弦,是的,那将非常好:) 【参考方案1】:

我更喜欢做完全相同的事情,并且IS可以将其全部绑定到使用宏的击键。

转到工具 > 宏 > 宏 IDE

添加一个新模块并使用此代码(时髦的 cmets 用于语法突出显示)

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 中,所以我在“显示包含的命令”文本框中查找“Macros.MyMacros.AttachingModule.AttachToAspNET”。

我更喜欢使用 Ctrl+Alt+D 但在“Press Shortcut Keys”文本框中输入任何你想要的内容,然后单击分配,然后确定

现在您只需点击 Ctrl+Alt+D 即可附加到所有 cassini 实例。

我在互联网上看到过各种版本,this 是我发现的最新版本。我不得不稍微修改它以删除额外的 Web 进程并从 WebDev.WebServer.exe 中删除 .exe,以便它可以调试 .net 4.0 的 cassini 实例。

【讨论】:

可悲的是宏已从 VS2012 中删除:( 什么?我今天终于设置了2012。这令人失望:-/ 这太棒了,我不知道为什么我等了这么久才寻找这个问题和回复。在我们的 SharePoint 开发服务器(安装了 VS)上,我们通常有 6 - 10 个 w3wp 进程,每次调试时我都必须附加到所有这些进程。这太棒了....【参考方案2】:

我不知道有任何此类插件您可以更轻松地使用快捷键附加到该进程并按“W”滚动到 WebDev 进程。

Ctrl+Alt+P - 附加到进程 (进程窗口现在具有焦点) 按W,跳转到以W开头的进程 按 Enter 附加

不是插件,但您无需触摸鼠标即可完成。

【讨论】:

感谢分享 附加到进程 快捷方式 - 出于某种原因,它隐藏在“调试”菜单快捷方式描述中。【参考方案3】:

查看这个答案:Attach To Process in 2012

这是一个简单的插件,它提供了连接到 nunit 代理、IIS 和 IIS Express 的快捷方式。与 Ctrl-Alt-P 相比,它纯粹是方便,但 方便。

Direct link to the plugin here

【讨论】:

以上是关于自动附加到开发服务器的 Visual Studio 加载项的主要内容,如果未能解决你的问题,请参考以下文章

调试期间在 Visual Studio 中自动附加到子进程

如何在 Visual Studio 2015 中开始调试时自动附加 Web 项目以处理“MicrosoftEdgeCP.exe”(Microsoft Edge)

visualstudio2022无法启动附加到进程

使用Visual Studio将类库项目附加到外部应用程序

如何在 Visual Studio 中将源附加到引用的程序集

在 Visual Studio 2008 中使用附加到进程调试 DLL 项目