48 Stimmen

VS2010 - Wie man automatisch stoppen Kompilierung auf erste Kompilierung Fehler

Bei der Arbeit haben wir eine C#-Lösung mit über 80 Projekten. In VS 2008 verwenden wir ein Makro, um die Kompilierung zu stoppen, sobald ein Projekt in der Lösung nicht erstellt werden kann (siehe diese Frage für mehrere Optionen für VS 2005 & VS 2008: Visual C++ 2008 Build beim ersten Kompilierfehler automatisch beenden? ).

Ist es möglich, das gleiche in VS 2010 zu tun? Wir haben festgestellt, dass die Makros in VS 2010 nicht funktionieren (zumindest konnte ich sie nicht zum Laufen bringen), da die Umgebungsereignisse in VS 2010 offenbar nicht ausgelöst werden.

Das Standardverhalten ist, so weit wie möglich fortzufahren und eine Liste der Fehler im Fehlerfenster anzuzeigen. Ich bin damit zufrieden, dass es entweder anhält, sobald ein Fehler auftritt (auf Dateiebene) oder sobald ein Projekt nicht erstellt werden kann (auf Projektebene).

Bitte nur Antworten für VS 2010. Wenn die Makros funktionieren, dann eine detaillierte Erklärung, wie man sie für VS 2010 konfigurieren würde geschätzt werden.

30voto

Noah Richards Punkte 6727

(Sie können jetzt diese als Erweiterung herunterladen wenn Sie es nicht selbst bauen wollen)

Diese Antwort funktioniert nur in VS2010 (scheint fair :]). Ich habe gesetzt den Quelltext auf meiner Github-Seite . Bevor Sie es bauen können, müssen Sie das SDK installieren . Sobald Sie das getan haben, holen Sie sich einfach den kompletten Quellcode von Github (einschließlich der Projektdateien) und erstellen Sie diesen. Sie können die Ausgabe in Ihre normalen VS-Instanzen installieren, indem Sie die VSIX in Ihrer Build-Ausgabe finden und sie öffnen.

Der wichtige Teil ist:

public void TextViewCreated(IWpfTextView textView)
{
    var dte = GlobalServiceProvider.GetService(typeof(DTE)) as DTE;
    textView.TextBuffer.Changed += (sender, args) =>
    {
        //Output window is friendly and writes full lines at a time, so we only need to look at the changed text.
        foreach (var change in args.Changes)
        {
            string text = args.After.GetText(change.NewSpan);
            if (BuildError.IsMatch(text))
                dte.ExecuteCommand("Build.Cancel");
        };
    }
}

... wo BuildError ist eine oben definierte Regex, die Sie anpassen können. Wenn Sie Fragen zum Ändern des Codes haben, lassen Sie es mich wissen.

7voto

Koob Punkte 101

Edit: Ich sehe gerade, dass Will mir zuvorgekommen ist - für VS2010 gibt es ein Add-In, das dies und vieles mehr kann. VSCommands 2010, über http://vscommands.com/features/

3voto

user13309289 Punkte 187

Prüfen Sie meine Antwort aquí .

Ich weiß, dass dies vielleicht etwas spät ist, aber wenn es jemandem hilft, dann sollte er die Erweiterung installieren VSColorOutput

Dann gehen Sie zu Tools => Options => VSColorOutput => General => Satz Stop Build on First Error a true .

Ich hoffe, das hilft, viel Spaß beim Debuggen!

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X