Lassen Sie meine von einem Ihrer letzten Kommentare beginnen:
... msbuild erkannt Ausgabe von Python-Skript als Warnungen. aber es könnte auch Bash, Perl, PHP-Skript oder so etwas sein. Msbuild erkennt Ausgabe als Warnung, und ich möchte diese Warnungen als Fehler behandeln. ...
Es gibt keine allgemeinen „drehen Warnungen in Fehler“ für jedes Werkzeug vorstellbar in MSBuild. Wie könnte es sein? Jedes von MSBuild aufgerufene Werkzeug hat, wenn überhaupt, eine Möglichkeit. Der C++ - Compiler und C# -Compiler zum Beispiel haben spezielle Befehlszeilenoptionen, die in ihrer Befehlszeile von den Msbuild-Dateien für diese Sprachen enthalten sind - nichts, was die Kern-Msbuild-Engine tun könnte.
Also, was Sie tun müssen, ist das Werkzeug (Python im Kontext der Frage) zu tun, um dies zu tun, wenn Sie es wollen. Sie können dies tun, indem Sie eine vorhandene/bekannte Eigenschaft (TreatWarningsAsErrors
) als Auslöser verwenden. Wenn es einen bestimmten Wert hat (true
), dann müssen Sie tun, was Sie tun müssen, damit Ihr Werkzeug Warnungen als Fehler ausgibt und entsprechend handelt.
Beispiel:
<PropertyGroup>
<PythonCmd>$(python_bin)\python.exe</PythonCmd>
<PythonCmd Condition="'$(TreatWarningsAsErrors)' == 'true'">$(PythonCmd) -W error</PythonCmd>
<PythonCmd>$(PythonCmd) %(FullPath)</PythonCmd>
</PropertyGroup>
<Exec Command="$(PythonCmd)" .../>
Nun, wenn Sie nicht wissen, wie man genau make Python tun, was Sie wollen (drehen Warnungen in Fehler), gibt es keine msbuild Magie, die helfen können Sie das tun, . Sie plötzlich tun haben eine Python spezifische Frage. Weil das eigentliche Problem, das Sie jetzt haben, nicht damit zusammenhängt, dass Python von innerhalb von Msbuild oder von, sagen wir, der Befehlszeile ausgeführt wird.
Eine zweite Option: Wenn Sie nicht können oder Python gebaut verwenden möchten nicht in der Fähigkeit von Warnungen in Fehler drehen, können Sie auch die Exec
-Tasks verwenden CustomErrorRegularExpression
-property um einen regulären Ausdruck angeben, die treatet werden soll als "Fehlerausgabe" durch das Tool (python.exe hier).
So etwas wie
<PropertyGroup>
<ErrorExp>.*: error :.*</ErrorExp>
<ErrorExp Condition="'$(TreatWarningsAsErrors)' == 'true'">.*: (warning|error) :.*</ErrorExp>
</PropertyGroup>
<Exec ... CustomErrorRegularExpression="$(ErrorExp)"/>
(Ungeprüfte!) Sollten Sie begonnen erhalten.
Da Python jedoch bereits eine Möglichkeit bietet, Warnungen als Fehler zu setzen (über -W error
scheint es), scheint diese Option unnötig verschachtelt zu sein. Bitte beachten Sie, dass Sie bei Ihrem Kommentar zu möglichen anderen Tools auch spezifische Kenntnisse über diese anderen Tools benötigen und wie sie ihre Warnungen formatieren (wenn sie überhaupt funktionieren), da Sie eine benutzerdefinierte Regex benötigen. Page 4 für Sie.
Also selbst dieser Ansatz erfordert spezifische Kenntnisse über das Tool, das Sie aufrufen, und nicht so sehr Msbuild.
Ich könnte völlig hier sein und Sie haben wirklich ein anderes Problem, Frage oder Notwendigkeit. Wenn ich die Kommentare zu Ihrer Frage überprüfe, sieht es so aus, als ob ich nicht die einzige bin. Daher müssen Sie vielleicht Ihre Frage ändern oder präzisieren (möglich mit einem Beispiel dessen, was Sie bereits versucht haben), um weitere/bessere Hilfe zu bekommen .
Die Compiler-Option ist für C++, aber die Warnungen, die Sie erhalten, ist für Python-Code. – Ajay
Ich dachte mir so viel, ich habe nur versucht, es an ein paar Stellen in .vcxproj zu setzen, um zu sehen, ob es helfen würde. Es tat es nicht. Irgendeine Idee, wie kann ich es als Fehler registrieren lassen? – Paladin
Das ist also eine [Python] -Frage, keine [Visual-C++] -Frage. Sie haben Ihre Frage nicht korrekt markiert. [Just rtfm] (https://docs.python.org/3.1/library/warnings.html), um die Option -W zu finden. –