2017-10-08 1 views
-2

Ich habe die Edit und weiter Funktion einrichten für mein C++ - Projekt, so kann ich einen Breakall ausführen, ändern Sie den Code und dann weiterhin die Ergebnisse meines Codes anzeigen. Allerdings wäre es besser, wenn ich nicht manuell auf die Schaltflächen klicken müsste. Meine erste Lösung war die Verwendung von 1 Tastendruck, die eine BreakAll und dann die Funktion Weiter ausführt. Jedoch fand ich keine Antwort für die Verwendung nur Visual Studio 2017.Wie man bricht und auf Fokus in Visual Studio 2017 verloren geht

Dann kam ich zu einer besseren Idee. Was passiert, wenn die kompilierte EXE ihren Fokus verliert und dann den Fokus zurückerlangt, um es zum Ausführen eines BreakAll und dann zum Fortfahren zu veranlassen. Oder ein alternativer Weg, der das Gleiche macht, aber einfacher zu machen wäre. Ist, wenn Visual Studio seinen Fokus verliert (weil ich mich auf die kompilierte exe konzentrierte). Es führt schnell einen BreakAll aus und fährt dann fort. Das würde mich Code schreiben lassen und es in Echtzeit ausführen.

Meine Frage ist, ist so etwas schon existiert? Ich konnte keine Antwort finden. Und wenn nicht, hat jemand eine Idee, ob es möglich ist, eine Erweiterung zu machen? Oder ist jemand bereit, es zu machen? Danke fürs Lesen.

EDIT: Hier ist einige Pseudo-Code.

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

EDIT2: Okay bekam es mit etwas Hilfe und Beispielskripte zu arbeiten. Es wird jetzt gespeichert und neu kompiliert, wenn das visuelle Studio seinen Fokus verliert. Und BreaksAll, wenn es den Fokus erhält. Hier ist der modifizierte Code:

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

FYI, C++ Bearbeiten und Fortfahren unterstützt, wenn Ihre Anwendung ausgeführt wird . Also, für Ihr C++ Projekt, können Sie Ihren Code ändern, drücken Sie Alt + F10 ("Apply Code Changes"), was (unter dem Deckblatt) alle bricht, Ihre Änderungen anwendet und weiter geht. – Ramkumar

Antwort

0

Sie sollten in der Lage sein, diese Aufgabe zu automatisieren meine Visual Commander Erweiterung.

Wie Sie das Visual Studio verlorenes Fokusereignis abfangen können, finden Sie unter https://stackoverflow.com/a/33592923/84507.

, dass Visual Studio Um zu überprüfen, verwenden derzeit das Debuggen ist:

if (DTE.Mode == vsIDEMode.vsIDEModeDebug) 

nutzen zu können, integrierte Visual Studio-Befehle ausführen:

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

Danke, das funktioniert großartig, ich habe den Code ein wenig modifiziert – StackingLua

Verwandte Themen