【发布时间】:2018-03-19 22:04:03
【问题描述】:
我为我的 C++ 项目设置了编辑和继续功能,因此我可以执行中断、更改代码,然后继续查看我的代码的结果。 但是,如果我不必手动单击按钮会更好。我的第一个解决方案是使用 1 个按键来执行 BreakAll 和 Continue 功能。但是我没有找到仅使用 Visual Studio 2017 的答案。
然后我想到了一个更好的主意。如果编译后的 exe 失去焦点然后重新获得焦点以使其执行 BreakAll 然后继续,该怎么办? 或者另一种方法,它做同样的但更容易制作。是 Visual Studio 失去焦点的时候(因为我专注于编译的 exe)。它快速执行 BreakAll 然后继续。 这样我就可以编写代码并实时执行。
我的问题是这样的东西已经存在吗?我找不到答案。如果没有,是否有人知道是否可以进行扩展?还是有人愿意做?感谢阅读。
编辑: 这是一些伪代码。
if compiled_build_running == true && lost_focus == true {
Debug.BreakAll
Debug.Continue
}
编辑2: 好的,它可以通过一些帮助和示例脚本来工作。现在,当 Visual Studio 失去焦点时,它会保存并重新编译。和 BreaksAll 当它获得焦点时。 这是修改后的代码:
using EnvDTE;
using EnvDTE80;
public class E : VisualCommanderExt.IExtension
{
public void SetSite(EnvDTE80.DTE2 DTE_, Microsoft.VisualStudio.Shell.Package package) {
DTE = DTE_;
System.Windows.Application.Current.Deactivated += OnDeactivated;
System.Windows.Application.Current.Activated += OnActivated;
}
public void Close() {
System.Windows.Application.Current.Deactivated -= OnDeactivated;
System.Windows.Application.Current.Activated -= OnActivated;
}
private void OnDeactivated(object sender, System.EventArgs e) {
try {
DTE.ExecuteCommand("File.SaveAll");
} catch (System.Exception ex) {
}
if (DTE.Mode == vsIDEMode.vsIDEModeDebug) {
DTE.ExecuteCommand("Debug.Start");
}
}
private void OnActivated(object sender, System.EventArgs e) {
if (DTE.Mode == vsIDEMode.vsIDEModeDebug) {
DTE.ExecuteCommand("Debug.BreakAll");
}
}
private EnvDTE80.DTE2 DTE;
}
【问题讨论】:
-
仅供参考,当您的应用程序运行时,支持 C++ 编辑并继续。因此,对于您的 C++ 项目,您可以修改您的代码,点击 Alt+F10(“应用代码更改”),这将(在幕后)打破所有,应用您的更改,然后继续。
标签: c++ visual-studio focus continue