22 Stimmen

Debuggen von MSBuild Customtask

Ich versuche, die MSBuild Customtask zu debuggen, die ich gerade erstellt habe, aber aus irgendeinem Grund hält es nie am Haltepunkt. Ich habe sogar dies versucht:

    public override bool Execute()
    {
        System.Diagnostics.Debugger.Break();

Und fügte einen Haltepunkt in dieser Zeile hinzu... Ich habe sogar den gesamten anderen Code in der Methode eliminiert und das hat nichts geändert.

Gibt es etwas Besonderes erforderlich, um die Erstellung von benutzerdefinierten Aufgaben für MSBuild debuggen zu können?

39voto

Joel Martinez Punkte 45129

Es ist zwar ein kleiner Hack, aber Sie können diese Codezeile auch einfach an der Stelle einfügen, an der Sie mit der Fehlersuche beginnen möchten:

System.Diagnostics.Debugger.Launch();

Wenn Sie es aufrufen, wird die CLR einen Dialog starten, in dem Sie gefragt werden, welchen Debugger Sie anhängen möchten.

10voto

Ich gehe folgendermaßen vor... Wählen Sie im Projekteigenschaften-Dialog auf der Registerkarte Debug "Start an External App" - setzen Sie C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\MSBuild.exe in der Box..

Geben Sie dann in den Befehlszeilenparametern Ihre Argumente /Target:Whatever test.proj

Fügen Sie einen Codestopp in Ihre benutzerdefinierte Aufgabe ein und starten Sie die App..

4voto

Rainer Sigwald Punkte 635

Sie können die Umgebungsvariable MSBUILDDEBUGONSTART=1 zu machen MSBuild.exe Prompt, um einen Debugger beim Start der Anwendung zu starten.

Sie können dann die Visual Studio-Instanz, die Sie zur Entwicklung Ihrer Aufgabe verwenden, als Debugger auswählen und einen Haltepunkt im Code Ihrer Aufgabe setzen.

Dies ist im Allgemeinen etwas schwieriger, als die Aufgabe so zu ändern, dass sie die Debugger.Launch() aber es kann auf Release-Builds und ohne Änderung einer Aufgabe verwendet werden, was nützlich sein kann.

Hier gibt es einen wichtigen Vorbehalt: Wenn Sie mit -m wird MSBuild mehrere Prozesse starten, und jeder von ihnen wird Sie auffordern, einen Debugger anzuschließen. Versuchen Sie zu bauen mit -m:1 oder bauen Sie einzelne Projekte, wenn Sie dies tun, damit Sie nicht versehentlich Dutzende von Prozessen erzeugen, die debuggt werden wollen.

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