2017-10-08 7 views
-2

私はC++プロジェクトの編集と機能のセットアップを手に入れましたので、ブレークを実行してコードを変更してから、コードの結果を表示し続けます。 しかし、ボタンを手動でクリックする必要がない方が良いでしょう。私の最初の解決策は、BreakAllを実行してからContinue関数を実行する1回のキー押しを使用することでした。しかし、私はビジュアルスタジオ2017だけを使用して答えを見つけることができませんでした。Visual Studioで壊れてフォーカスを失う方法2017

私は良いアイデアに来た。コンパイルされたexeがフォーカスを失った場合、フォーカスを戻してBreakAllを実行し、次に続行するとどうなりますか? 同じことをするが、作成するのが簡単な別の方法。私はコンパイルされたexeファイルに焦点を当てているので、Visual Studioのフォーカスが失われます。 BreakAllをすばやく実行してから続行します。 それは私にコードを書いて、それをリアルタイムで実行させるでしょう。

私の質問は既に存在しますか?私は答えを見つけることができませんでした。そしてもしそうでなければ、誰かがこれが拡張を作ることが可能かどうか考えを持っていますか?それとも、誰かがそれを作ろうとしているのですか?読んでくれてありがとう。

EDIT: ここにいくつかの擬似コードがあります。

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

EDIT2: さてさて、それはいくつかの助けと例のスクリプトで動作するようになりました。これで、Visual Studioがフォーカスを失ったときに保存され、再コンパイルされます。そして、それがフォーカスを得たときにブレークオール。あなたは私のVisual Commander拡張機能を使用してこのタスクを自動化することができるはず

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 Studioのフォーカスが失われたイベントをキャッチする方法については、https://stackoverflow.com/a/33592923/84507を参照してください。 Visual Studioは、現在使用をデバッグしていることを確認するには

if (DTE.Mode == vsIDEMode.vsIDEModeDebug) 

ビルトインのVisual Studioコマンドを実行するには、使用:あなたのアプリが動作しているとき

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

ありがとう、これは素晴らしい作品私はコードを少し修正 – StackingLua

関連する問題