2017-10-08 7 views
-2

J'ai obtenu la fonction Edit et continue de la fonction pour mon projet C++ afin que je puisse exécuter un breakall, changer le code et ensuite continuer à voir les résultats de mon code. Cependant, ce serait mieux si je n'avais pas à cliquer manuellement sur les boutons. Ma première solution utilisait 1 keypress qui exécute un BreakAll puis la fonction Continue. Cependant, je n'ai pas trouvé de réponse pour l'utilisation de Visual Studio 2017.Comment casser et continuer sur le focus perdu dans Visual Studio 2017

Ensuite, je suis venu à une meilleure idée. Que se passe-t-il si l'exe compilé perd son focus et gagne ensuite le focus pour le faire exécuter un BreakAll puis continuer. Ou une manière alternative qui fait la même chose mais serait plus facile à faire. Est-ce que Visual Studio perd son focus (parce que je me suis concentré sur l'exe compilé). Il exécute rapidement un BreakAll et continue ensuite. Cela me permettrait d'écrire du code et de l'exécuter en temps réel.

Ma question est quelque chose comme ça existe déjà? Je n'ai pas trouvé de réponse. Et si non quelqu'un a une idée si cela est possible de faire une extension? Ou est-ce que quelqu'un est prêt à le faire? Merci d'avoir lu.

EDIT: Voici un pseudo code.

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

EDIT2: D'accord eu à travailler avec des scripts d'aide et des exemples. Il enregistre maintenant et recompile lorsque le studio visuel perd son focus. Et BreaksAll quand il obtient le focus. Voici le code modifié:

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

Pour votre information, C++ Modifier et continuer est pris en charge lorsque votre application est en cours d'exécution . Donc, pour votre projet C++, vous pouvez modifier votre code, appuyez sur Alt + F10 ("Appliquer les changements de code"), qui (sous les couvertures) casseront tous, appliqueront vos changements et continueront. – Ramkumar

Répondre

0

Vous devriez être en mesure d'automatiser cette tâche en utilisant mon extension Visual Commander.

Pour savoir comment intercepter l'événement de focus perdu Visual Studio, voir https://stackoverflow.com/a/33592923/84507.

Pour vérifier que Visual Studio est le débogage actuellement utilisé:

if (DTE.Mode == vsIDEMode.vsIDEModeDebug) 

Pour exécuter intégré dans les commandes Visual Studio utiliser:

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

Merci cela fonctionne très bien j'ai modifié le code un peu – StackingLua