使用 EnvDTE.ExecuteCommand 以编程方式开始调试特定项目

2023-12-28

我有一个包含多个启动项目的解决方案,我试图每晚自动重新启动其中一个项目,同时将新进程附加到同一个调试器。

我能够重新启动该过程(使用Process.Start)并将当前调试器附加到其上,但到目前为止它的可靠性还不是很高,并且根据设计,单击“停止”按钮只会与进程分离而不是终止它。

我知道 Visual Studio 团队已经发布了Visual Studio 扩展 https://visualstudiogallery.msdn.microsoft.com/a1141bff-463f-465f-9b6d-d29b7b503d7a这允许自动将子进程附加到当前调试器 http://blogs.msdn.com/b/visualstudioalm/archive/2014/11/24/introducing-the-child-process-debugging-power-tool.aspx,它可能比我的代码工作得更好,但它不可移植,因为它需要本地配置。

实现我需要的最简单方法似乎是使用 IDE 本身以编程方式重新启动项目,就像我通过右键单击项目并选择手动执行的那样调试 > 启动新实例。我可以访问代码中的相关 DTE 对象(在开发时)。

因此,有什么方法可以使以下伪代码工作,要求 Visual Studio 开始调试specific项目/exe 通过将其作为命令参数传递?

DTE.ExecuteCommand("ClassViewContextMenus.ClassViewProject.Debug.Startnewinstance", "ProjectToBeRestarted");

DTE.ExecuteCommand("Debug.Start", "ProjectToBeRestarted");

DTE.ExecuteCommand("Debug.Start", "ProjectToBeRestarted.exe");

我希望尽可能避免操作 UI(例如存储原始启动项目、设置新项目以及恢复启动项目)。


您面临的问题是很少有 Visual Studio 命令接受参数作为输入。考虑到命令通常使用当前 IDE 上下文(例如选择、插入符号位置等)来推断实际应该做什么,这是有道理的。例如,ClassViewContextMenus.ClassViewProject.Debug.Startnewinstance命令依赖于解决方案资源管理器中当前选定的项目来了解要开始调试的项目,并且它不接受参数。

作为参考,您可以在此处找到接受参数的 Visual Studio 命令的完整列表:https://msdn.microsoft.com/en-us/library/c338aexd.aspx https://msdn.microsoft.com/en-us/library/c338aexd.aspx

要解决您的问题,您需要首先使用 DTE 对象设置当前项目选择,然后执行Startnewinstance命令。

DTE.ToolWindows.SolutionExplorer.GetItem("SolutionNameHere\\ProjectNameHere").Select(vsUISelectionType.vsUISelectionTypeSelect)
DTE.ExecuteCommand("ClassViewContextMenus.ClassViewProject.Debug.Startnewinstance")

注意:根据您的编程语言,可能需要也可能不需要双反斜杠转义。最后的字符串应该只有一个反斜杠。

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

使用 EnvDTE.ExecuteCommand 以编程方式开始调试特定项目 的相关文章

  • 单元测试验证失败

    我正在运行我的单元测试PostMyModel路线 然而 在PostMyModel 我用的是线Validate
  • 在 Java 中创建 T 的新实例

    在C 中 我们可以定义一个泛型class A
  • 在 OnModelCreating 期间设置列名称

    Issue 我目前正在尝试通过设置的属性为我的表及其列添加前缀 我正在使用实体框架核心 我已经正确地为表名添加了前缀 但我似乎无法弄清楚列的前缀 我有一种感觉 我需要使用反射 我已经留下了我的 可能很糟糕的 反思尝试 有人有办法在实体中设置
  • 删除是如何工作的? [复制]

    这个问题在这里已经有答案了 可能的重复 C 编程 free 如何知道要释放多少 https stackoverflow com questions 1518711 c programming how does free know how m
  • linq 中使用字符串数组 c# 的 'orderby'

    假设我有一个这样的方法定义 public CustomerOrderData GetCustomerOrderData string CustomerIDs var query from a in db Customer join b in
  • CSharpRepl emacs 集成?

    我碰巧知道莫诺CSharpRepl http www mono project com CsharpRepl 是否有 emacs csharp 模式使用它在一个窗口中运行 REPL 并像 python 模式一样在另一个窗口中编译 运行 C
  • C# 5 async/await 线程机制感觉不对?

    为什么让调用线程进入异步方法直到内部 等待 一旦调用异步方法就生成一个线程 这不是更干净吗 这样您就可以确定异步方法会立即返回 您不必担心在异步方法的早期阶段没有做任何昂贵的事情 我倾向于知道某个方法是否要在 我的 线程上执行代码 不管是堵
  • 将表(行)与 OpenXML SDK 2.5 保持在一起

    我想在 Word 文档中生成多个表 每行 2 行 但我想将这两行保留在一起 如果可能的话 new KeepNext 第一行不起作用 new KeepNext 第一行的最后一段不起作用 new CantSplit 放在桌子上不起作用 在所有情
  • 将接口转换为其具体实现对象,反之亦然?

    在 C 中 当我有一个接口和几个具体实现时 我可以将接口强制转换为具体类型 还是将具体类型强制转换为接口 这种情况下的规则是什么 Java 和 C 中都允许这两个方向 向下转型需要显式转型 如果对象类型不正确 可能会抛出异常 然而 向上转换
  • 在 asp.net MVC 中使用活动目录进行身份验证

    我想使用活动目录对我的 asp net mvc 项目中的用户进行身份验证 在网上冲浪了几个小时后 我没有找到任何对我有用的东西 我已经看到了所有结果 但什么也没有 我尝试按照许多帖子的建议编辑我的 web config 如果有人可以帮助我提
  • 使用具有抗锯齿功能的 C# 更改抗锯齿图像的背景颜色

    我有一个图像需要更改背景颜色 例如 将下面示例图像的背景更改为蓝色 然而 图像是抗锯齿的 所以我不能简单地用不同的颜色替换背景颜色 我尝试过的一种方法是创建第二个图像 仅作为背景 并更改其颜色并将两个图像合并为一个图像 但是这不起作用 因为
  • 使用 GCC 生成可读的程序集?

    我想知道如何使用GCC http en wikipedia org wiki GNU Compiler Collection在我的 C 源文件中转储机器代码的助记符版本 这样我就可以看到我的代码被编译成什么 你可以使用 Java 来做到这一
  • 英文日期差异

    接近重复 如何计算相对时间 https stackoverflow com questions 11 how do i calculate relative time 如何在 C 中计算某人的年龄 https stackoverflow c
  • ASP.NET MVC 路由:如何从 URL 中省略“索引”

    我有一个名为 StuffController 的控制器 具有无参数索引操作 我希望从表单中的 URL 调用此操作mysite com stuff 我的控制器定义为 public class StuffController BaseContr
  • .NET 4 的条件编译[重复]

    这个问题在这里已经有答案了 可能的重复 条件编译和框架目标 https stackoverflow com questions 2923210 c sharp conditional compilation and framework ta
  • 如何调试 .NET 运行时中的内部错误?

    我正在尝试调试一些处理大文件的工作 代码本身works 但 NET 运行时本身会报告零星错误 对于上下文 这里的处理是一个 1 5GB 文件 仅加载到内存中一次 在循环中处理和释放 故意尝试重现此否则不可预测的错误 我的测试片段基本上是 t
  • 来自 3rd 方库的链接器错误 LNK2019

    我正在将旧的 vc 6 0 应用程序移植到 vs2005 我收到以下链接器错误 我花了几天时间试图找到解决方案 错误LNK2019 无法解析的外部符号 imp 创建AwnService 52 在函数 public int thiscall
  • INotifyPropertyChanged 和 propertyName

    我一直不确定它的含义propertyName实施时INotifyPropertyChanged 所以一般来说你实现INotifyPropertyChanged as public class Data INotifyPropertyChan
  • 结构化绑定的用例有哪些?

    C 17 标准引入了新的结构化绑定 http en cppreference com w cpp language structured binding功能 最初是proposed http www open std org jtc1 sc
  • 使用未分配的局部变量

    我遇到了一个错误 尽管声明了变量 failturetext 和 userName 错误仍然出现 谁能帮帮我吗 Use of Unassigned local variable FailureText Use of Unassigned lo

随机推荐

  • JDBC 连接文件可以包含计算属性吗?

    在 XPage Extension Library 一书中 第12章 第409页有一个JDBC连接文件的示例
  • 在 JSON API Wordpress 上启用 CORS

    我有一个 WordPress 网站 其中有一个名为 JSON API 的插件 该插件为 WordPress 中的内容提供 JSON 格式 我可以通过添加 header Access Control Allow Origin 在 WordPr
  • 错误 - 内部类中的静态声明非法

    这是什么意思 Illegal static declaration in inner class Mobile mymobile modifier static is only allowed in constant variable de
  • 使用 `by = .I` 在 data.table 中进行行操作

    这是一个很好的解释行操作在data table https stackoverflow com questions 21651978 row operations in data table 37667176 我想到的一种选择是使用一种独特
  • 在 amcharts 中单击时突出显示单个条形

    我有 amcharts 的条形图 我需要在点击栏上突出显示单个栏 当前的情况是当我单击多个栏时 所有栏都会突出显示 这是我的代码 listeners event clickGraphItem method function event va
  • Django 业务逻辑和视图逻辑分离

    有人可以解释一下以下内容的含义吗 业务逻辑属于模型 但视图逻辑属于视图 每个的一般区别是什么以及一些例子 谢谢 您可以在其他问题的评论中提问 商业逻辑是与 事物 如何工作或运作相关的任何事物 以下面为例 class Animal Objec
  • 为什么单个结构化查询每批运行多个 SQL 查询?

    为什么以下结构化查询会运行多个 SQL 查询 如 Web UI 的 SQL 选项卡中所示 import org apache spark sql streaming OutputMode Trigger import scala concu
  • Spring eureka 仪表板在 Wildfly 上返回 XML

    我正在尝试在 Wildfly 部署我的尤里卡服务 但是当我尝试访问仪表板时 我得到以下 xml 作为响应
  • 用 PHP 或 Java 实现大型(1GB 或更多)文件上传网站的最佳方法是什么?

    用 PHP 或 Java 实现大型 1GB 或更多 文件上传网站的最佳方法是什么 使用 PHP 或 Java 中的默认上传方式会导致 RAM 空间不足 并且网站速度会急剧下降 在客户端打开文件 将其全部内容读取到内存中 关闭它 然后开始发送
  • 在docker容器中创建D盘

    是否可以在 docker Windows 容器中创建一个驱动器号不是 C 的新分区 我需要一个 D 和一个 E 驱动器来存放某些软件 我不认为你可以从现有的图像中做到这一点 但如果你制作一个像这样的 Dockerfile FROM dotn
  • 如何使用选择菜单和 link_to 重定向到另一个页面 - Ruby on Rails

    我想使用选择菜单重定向到另一个页面 但是当我选择 主页 时 它不会将我重定向到主页 什么都没发生
  • 有没有办法读取 clojure 文件中的所有表单?

    If I use gt
  • ListAdapter修改数据源(这是一个arraylist)

    这是我最近遇到的一个问题 我有一个带有自定义适配器类的列表视图 适配器接受列表视图并用其中的元素填充列表视图 现在 我想在列表视图的每一行上有一个按钮来从中删除项目 我应该如何解决这个问题 有没有办法远程触发活动类中的方法并调用适配器上的n
  • 使用 AppleScript 拆分全屏应用程序

    我一直在使用这个脚本 https gist github com dsummersl 4175461在 Automator 中 它可以在全屏和窗口模式之间切换应用程序 我经常使用分屏应用程序 El Capitan 中引入 那么有什么方法可以
  • 通过添加哈希来防止查询字符串操作?

    为了保护 Web 应用程序免受查询字符串操作的影响 我正在考虑向每个 url 添加一个查询字符串参数 该参数存储所有其他查询字符串参数和值的 SHA1 哈希值 然后根据每个请求的哈希值进行验证 此方法是否提供强大的保护以防止用户操纵查询字符
  • 低通滤波器编程

    我已经用 Java 编写了一个 Sega Master System 模拟器 尽管这个问题不是 Java 特有的 并且已经完成了除 SN76489 声音芯片之外的所有内容 该芯片如何发出声音很简单 我遇到的问题是将其转换为可通过 PC 笔记
  • 使用门户更改 Azure 应用程序设置,无需重新启动

    我有时会这样 在 Azure 门户中 我转到 应用程序服务 然后单击我的 Web 应用程序 然后转到 应用程序设置 在这里 我更改了 应用程序设置 列表中的一个值 例如 我将 128 更改为 129 最后我点击 保存 这会导致我的网络应用程
  • 姜戈·格拉佩利错误

    我对姜戈 格拉佩利有意见 它似乎加载 CSS 得很好 但样式似乎 关闭 也许一些图片可以澄清我的意思 我刚刚遇到了这个 你需要确保 grappelli 出现在之前 django contrib admin in INSTALLED APPS
  • KnockoutJS - 更新视图模型/映射插件

    如何更新完整的 viewModel 在页面加载时 我得到一个模型并使用转换它ko mapping fromJS myObject 到一个视图模型 如果用户单击按钮我想从服务器获取更新的数据 现在我想应用这些更新 如果我使用ko applyB
  • 使用 EnvDTE.ExecuteCommand 以编程方式开始调试特定项目

    我有一个包含多个启动项目的解决方案 我试图每晚自动重新启动其中一个项目 同时将新进程附加到同一个调试器 我能够重新启动该过程 使用Process Start 并将当前调试器附加到其上 但到目前为止它的可靠性还不是很高 并且根据设计 单击 停