“附加到流程”作为构建后事件

2024-03-06

我有一个在“w3wp.exe”进程下托管的应用程序。

在调试时,我经常发现自己遵循以下步骤:

1 - 做一些改变

2 - 构建项目

3 - 使用“工具”菜单下的“附加到进程”对话框附加到“w3wp.exe”。

4 - 在应用程序中执行一些操作以使我的代码执行,这样我就可以在调试器中单步执行它

我想在构建后脚本中自动执行第 3 步,以便 IDE 在构建完成后自动附加到该进程。请注意,我已经将应用程序作为构建后流程的一部分启动,因此我可以依靠此时现有的流程。

有谁知道如何自动执行“附加到进程”命令?来自命令行的东西会特别好,但宏也可以。

我在 Windows 7 64 位下使用 Visual Studio 2008。

Edit@InSane 基本上给了我正确的答案,但它不起作用,因为我需要调试托管代码,而不是本机代码。看来 vsjitdebugger 默认为 Native 代码,因此我的断点没有被命中。从 IDE 内部,我可以指定“托管代码”,调试器将按预期附加。那么有没有办法让 vsjitdebugger 指向托管代码呢?


我终于能够通过在互联网上其他地方找到的示例来解决这个问题。我在这里分享它,因为这对我很有帮助。

1 - 使用以下代码创建一个新的命令行应用程序(此示例位于 VB.NET 中)。

Option Strict Off
Option Explicit Off
Imports System
'On my machine, these EnvDTE* assemblies were here:
'C:\Program Files (x86)\Common Files\microsoft shared\MSEnv\PublicAssemblies
Imports EnvDTE
Imports EnvDTE80
Imports EnvDTE90
Imports System.Diagnostics
Imports System.Threading

Module modMain
    Function AttachToProcess(ByVal processName As String, _
                             ByVal Timeout As Integer) As Boolean
        Dim proc As EnvDTE.Process
        Dim attached As Boolean
        Dim DTE2 As EnvDTE80.DTE2

        Try
            DTE2 = _
            System.Runtime.InteropServices.Marshal.GetActiveObject("VisualStudio.DTE.9.0")

            For Each proc In DTE2.Debugger.LocalProcesses
                If (Right(proc.Name, Len(processName)).ToUpper = processName.ToUpper) Then
                    proc.Attach()
                    System.Threading.Thread.Sleep(Timeout)
                    attached = True
                End If
            Next
        Catch Ex As Exception
            Console.Write("Unable to Attach to Debugger : " & Ex.Message)
        End Try

        Return attached
    End Function

    Sub Main()
        'to call w/ Command Line arguments follow this syntax
        'AttachProcess <<ProcessName>> <<TimeOut>>
        'AttachProcess app.exe 2000
        Dim AppName As String = "w3wp.exe"
        Dim TimeOut As Integer = 20000 '20 Seconds
        Try
            If Environment.GetCommandLineArgs().Length > 1 Then
                AppName = Environment.GetCommandLineArgs(1)
            End If

            If Environment.GetCommandLineArgs().Length > 2 Then
                If IsNumeric(Environment.GetCommandLineArgs(2)) Then
                    TimeOut = Environment.GetCommandLineArgs(2)
                End If
            End If
            Environment.GetCommandLineArgs()
            AttachToProcess(AppName, TimeOut)
            Console.WriteLine("Attached!!")

        Catch Ex As Exception
            Console.Write("Unable to Attach to Debugger : " & Ex.Message)
        End Try
    End Sub
End Module

2 - 在 Visual Studio 中打开要调试的解决方案

3 - 在“构建后”事件结束时,输入对此新实用程序的调用,如下所示:

c:\AutoAttach.exe w3wp.exe 20000

4 - 构建您的应用程序

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

“附加到流程”作为构建后事件 的相关文章

  • 在 Visual Studio C++ 2008 中包含 dll

    有没有办法将 dll 包含在项目中 这样我就不必在编译后将这些 dll 与可执行文件放在同一文件夹中 这样我就可以用它们编译我的项目 这是否有可能 如果是 有人可以指导我 我的项目是一个 opencv 项目 有很多 dll 我必须包含在文件
  • 证书问题 - Windows 7 升级后导入密钥“对象已存在”时出错

    我有大约 60 个 pfx 文件 用于项目的所有主要程序集 它们是独特的文件 但我对所有文件使用相同的密码 从 Windows Vista 升级到 Windows 7 后 当我在 Visual Studio 2008 中单击 生成 时 会出
  • 如何构建 Office 加载项而不在构建系统上注册?

    我们正在使用 Visual Studio 2008 构建 Office 2007 加载项 我们的构建是通过持续集成服务器 一台机器 执行的 每当我们签入更改或手动请求更改时 该服务器都会进行构建 服务器可以执行同时构建 我们注意到 当 Vi
  • 如何在 Ansible 中运行 MySQL 查询

    我需要编写一个 Ansible 脚本来在 MySQL 数据库中执行 SQL 查询 这是我尝试过的 你能指导一下吗 hosts localhost tasks name retrive data command mysql u root h
  • Visual Studio 调试器 - 自动变量分配

    我正在开发一个多开发人员项目 正在开发的应用程序是通过启动器应用程序启动的 该应用程序传递登录用户 位置等参数 现在 当我调试应用程序时 我在代码上设置了一个断点解析输入参数 并将用户名变量分配给我的用户名等 我可以对这些值进行硬编码 但是
  • 如何将 IDispatch* 放入托管代码中

    我一直在考虑尝试使用 C 编写一个实现 OPOS 服务对象的 COM 对象 我已经使用自动化和 MFC 在 C 中完成了它 这并不太困难 所以我坚持尝试将其转换为一种方法 我将排除界面中的其他方法 因为它们很简单 或者我希望如此 id 6
  • 有状态 WCF Web 服务

    我是 WCF 新手 我一直在尝试在 Web 服务中使用会话状态 我设法使用number http www codeproject com KB session SessionWithWS aspx msg 3227646 of http w
  • 无法在表适配器配置属性中找到对象“Web.config”的连接“MyConnName”

    I want to change the query in table adapter but it s not opening throwing an error Configure table Adapter Failed in pro
  • 有没有办法使用 SauceLabs 的 RemoteWebDriver 禁用 CORS 检查

    问题说明了一切 我正在尝试在 SauceLabs 上执行一些硒测试 该测试加载一个发出跨域请求的网页 我在想是否有一种方法可以通过代码以独立于平台的方式禁用 CORS 使用时Chrome驱动程序 Chrome组合禁用cors questio
  • 使用 ASP.NET 开发服务器测试多个域

    我正在开发一个 Web 应用程序 该应用程序将根据用于访问该网站的域名动态更改其内容 多个域将指向同一个应用程序 我希望使用以下代码 或类似的代码 来检测域名并执行自定义 string theDomainName Request Url H
  • 当一个控制台应用程序已在运行时,如何在 Visual Studio 中启动第二个控制台应用程序

    我正在研究 WCF 书中的一些示例 单个解决方案中有一个主机项目和客户端项目 两者都是控制台应用程序 主机是启动应用程序 但客户端应用程序似乎没有像书中所说的那样打开控制台 书上说 当主机运行时 运行客户端 运行 按钮已被禁用 因为它已经在
  • 在 Windows 7 上安装 VS 2008 Team Developer

    有人在 Windows 7 beta 上成功安装了 VS 2008 Team Developer 版本吗 每次我尝试时 都会收到有关 C Windows Winsxs 权限不足的错误 我能够毫无问题地安装 VS 2008 Team Data
  • 编译期间汇编解析的顺序

    VS 2008 如何确定在哪里查找应用程序编译过程中使用的程序集 必须使用某种顺序 工具 设置中是否有使用的东西或其他东西 我正在寻找编译过程中程序集解析发生的顺序 实际上 决定顺序的不是 VS 2008 而是编译器 我知道您没有指定语言
  • 如何将外部文件添加到应用程序文件(clickonce / .NET)

    我在用着 发布 vs2008 中的选项 我很高兴它的工作原理 现在我想添加 2 个外部 exe 文件到已安装的包中我注意到按钮 应用程序文件 在发布选项卡上 但似乎不允许手动添加新文件 我已经玩过这个并找到了存档的方法 1 将EXE文件作为
  • “应用程序无法正确启动(0xc000007b)。单击“确定”关闭应用程序。”

    当我尝试打开 Visual Studio 2010 时 我在运行 Windows Server 2008 R2 Enterprise SP1 的 VPS 上收到标题中的错误消息 即使在我安装了 SQL Server 2012 和 VS 20
  • .NET 中有什么方法可以以编程方式侦听 HTTP 流量吗?

    我正在使用浏览器自动化来测试网站 但我需要验证来自浏览器的 HTTP 请求 即图像 外部脚本 XmlHttpRequest 对象 有没有一种方法可以以编程方式实例化代理以供浏览器使用以查看其发送的内容 我已经在使用 Fiddler 来监视流
  • 复制 Visual Studio 项目的最快方法/脚本是什么?

    你好 我已经设置了 Visual Studio Express C 项目 其中包含包含头文件和库的路径 现在我喜欢复制这个项目 使其具有与包含的标头和库相同的路径 但对于不同的名称 我不知道如何手动进入 vcproj 文件并开始更改名称 有
  • Visual Studio 应用程序中有两个以上主要方法?

    在我的项目中 我有两个以上具有相同签名的 Main 方法 一种是winForm 另一种是Console 类 如何将其中任何一个设置为入口点 我宣布 STAThread 在设置入口点的一种主要方法之前 但它不起作用 我正在使用 Visual
  • Word 2010 自动化:“转到书签”

    我有一个用 Delphi 7 编写的程序 它打开一个基于模板的新 Word 文档 文档打开后 系统会自动跳转到书签 在模板中预定义 并在其中添加一些文本 以下代码在 Word 2003 中工作正常 但会导致invalid variant o
  • 如何强制 Visual Studio 2008 生成 Designer.cs,例如不管怎样.aspx.designer.cs

    我在使用 Visual Studio 2005 使用网站技术生成的 Asp Net V2 0 中有一些 Web 表单 想要将它们导入到设置为 v3 5 Asp Net MVC 的 Visual Studio 2008 我在其中使用项目技术

随机推荐