2017-10-08 109 views
-2

我得到了编辑并继续为我的C++项目设置功能,以便我可以执行breakall,更改代码,然后继续查看我的代码的结果。 但是,如果我不必手动点击按钮会更好。我的第一个解决方案是使用1个按键执行BreakAll,然后执行Continue功能。不过,我没有找到一个答案,只使用Visual Studio 2017.如何在Visual Studio 2017中丢失并继续失去焦点

然后,我来了一个更好的主意。如果编译好的exe文件失去焦点,然后重新获得焦点,则执行BreakAll然后继续。 或者做一个相同但更容易制作的替代方法。是什么时候Visual Studio失去了重点(因为我专注于编译的exe)。它快速执行BreakAll,然后继续。 这会让我编写代码并实时执行它。

我的问题是这样的事情已经存在吗?我找不到答案。如果没有人有一个想法,如果这是可以做一个扩展?还是有人愿意做出来?谢谢阅读。编辑: 这是一些伪代码。

if compiled_build_running == true && lost_focus == true { 
    Debug.BreakAll 
    Debug.Continue 
} 

EDIT2: 好吧得到了它的一些帮助和示例脚本。它现在在视觉工作室失去重点时保存并重新编译。当它获得焦点时,它将全部崩溃。 下面是修改代码:

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; 
} 
+0

仅供参考,C++编辑并继续支持你的应用程序运行时。因此,对于您的C++项目,您可以修改代码,按Alt + F10(“应用代码更改”),这将会(在封面下)全部破解,应用您的更改并继续。 – Ramkumar

回答

0

你应该能够使用我的Visual Commander扩展自动完成这一任务。

关于如何捕捉Visual Studio失去焦点事件,请参阅https://stackoverflow.com/a/33592923/84507

要检查的Visual Studio正在调试使用:

if (DTE.Mode == vsIDEMode.vsIDEModeDebug) 

要运行内置Visual Studio的命令使用方法:

DTE.ExecuteCommand("Debug.BreakAll"); 
+0

谢谢你的工作很好,我修改了一下代码 – StackingLua