Meine Frage basiert auf ein anderes , aber ich möchte das Gegenteil tun : Msbuild anweisen, die Warnung als Fehler zu behandeln, anstatt eine bestimmte msbuild-Warnung zu unterdrücken.
Alles, was ich bisher gesehen habe, besagt jedoch, dass /p:WarningsAsErrors
nur csc-Warnungen und -Fehler akzeptiert. Ich habe versucht, einfach die MSB
fallen zu lassen und nach der Zahl zu suchen, die dort zur Arbeit gehen könnte, aber kein Glück.
Gibt es eine Möglichkeit, eine Warnung "Assembly reference not found" von msbuild (Befehlszeile) als Fehler zu behandeln?
Kürzlich benötigte ich etwas Ähnliches (das auf bestimmte Log-Ereignisse einwirkte), aber ich konnte keine saubere Lösung finden, hauptsächlich weil ich nicht herausgefunden habe, wie ich programmatisch auf die Logger im Msbuild-Prozess zugreifen kann. Ich habe mir das doch ausgedacht, angepasst an dein Problem ist das Prinzip:
Klingt vielleicht hart, aber der Code ist einfach genug:
%Vor%Hier ist ein Beispiel für ein msbuild-Skript, das es verwendet:
%Vor%Und Sie rufen es so auf:
%Vor%bearbeiten Ich brauchte das nur noch einmal, konnte aber die ursprüngliche DLL, die Projektdatei usw. nicht mehr finden - ich dachte, ich würde nur den Code und die einfachsten Build-Anweisungen in git speichern und bei Bedarf sofort erstellen es ist wahrscheinlich sauberer. Speichern Sie den obigen Code im Grunde in einer Datei customlogger.cs und erstellen Sie ihn dann irgendwo in Ihrem Build-Prozess, bevor Sie msbuild mit dem benutzerdefinierten Logger effektiv aufrufen, indem Sie
verwenden %Vor%update Als Reaktion auf Kommentare: Ich versuche es heute noch einmal. Ich bin mir nicht sicher, ob der ursprüngliche Code wirklich funktioniert hat (nun ja, für die Beispielnachricht, aber nicht für die eigentliche Warnung MSB3245) Es hakt nur Nachrichtenereignisse, während die ResolveAssemblyReference ein tatsächliches Warnungsereignis ausgibt und außerdem die Warnungsnummer normalerweise nicht in der Nachricht enthalten ist. Dies macht jedoch den Trick:
%Vor%Es scheint, dass die dieser Warnung zugeordnete Nachricht keine Warnung ist:
Wenn dieser Verweis von Ihrem Code benötigt wird, können Sie eine Kompilierung erhalten Fehler
, ist nicht ganz richtig. Wenn der fehlende Verweis ein WPF-Thema ist, erhalten Sie stattdessen einen Laufzeitfehler (System.IO.FileNotFoundException).
Wenn Sie speziell nach MSB3245 suchen, erhalten Sie:
CSC: Warnung CS1691: 'MSB3245' ist keine gültige Warnungsnummer
Tags und Links msbuild