2017-05-04 2 views
0

Mein übergeordnetes Ziel ist es, alle Warnungen am Ende eines Lösungs-Builds zu lesen und sie dann als Fehler zu protokollieren. Dies unterscheidet sich von der Einstellung TreatWarningsAsErrors, da dies auch Binärdateien für Projekte mit diesen Warnungen erstellen sollte.Wie kann ich in einer MSBuild-Task auf alle Warnungen zugreifen, die vom Build generiert wurden?

Ich erwarte, dies mit einer benutzerdefinierten MSBuild-Aufgabe zu lösen, aber ich weiß nicht, was ich brauche, um es aus der .targets-Datei zu übergeben.

EDIT: Ich glaube nicht, dass dies ein Duplikat von this question ist, weil das Adressen das Protokoll für eine bestimmte Zeichenfolge analysiert und einen Fehler für diesen bestimmten Code ausgibt. Ich möchte eine Liste aller Warnungen im Build erhalten, unabhängig von ihrem Inhalt.

+0

Mögliche Duplikate von [Wie kann ich die MSB3245-Warnung (konnte nicht auflösen) als Fehler behandeln?] (Http://stackoverflow.com/questions/17495278/how-can-i-treat-msb3245-could-not -solve-reference-warning-as-a-error); Die Frage sieht etwas anders aus, aber am Ende ist es dasselbe: wie man auf Warnungen reagiert, die während des Builds vom Logger ausgegeben werden. – stijn

+0

stjin - das könnte nützlich sein, aber ich möchte nicht nur bestimmte Warnungen abfangen. Ich möchte alle Warnungen auffangen. Da diese in verschiedenen Formen auftreten können, reicht die direkte Protokollanalyse möglicherweise nicht aus. Ich werde es versuchen. – Dahud

+0

Soweit ich weiß, sollten alle Warnungen, die von MS-Tools ausgegeben werden, eine case-insensitive Warnung [^:] +: 'regex enthalten, was einfach genug ist, um sie auf die verknüpfte Antwort anzuwenden. Und andere Tools folgen besser der gleichen Konvention, wenn sie möchten, dass ihre Nachrichten sich entsprechend der res verhalten. – stijn

Antwort

0

Sie können keine Warnungen innerhalb einer Aufgabe erstellen, da sie einfach nicht auf diese Informationen zugreifen können. Warnungen werden ausgelöst und an die MS Build-Protokollierungsinfrastruktur gesendet und dort gehandhabt, was vollständig von der Taskausführung getrennt ist.

Sie können jedoch einen benutzerdefinierten Logger schreiben, um Warnungen zu verfolgen, die vom Build ausgegeben wurden. Wenn Sie bei einer benutzerdefinierten Protokollierung ein Warnungsereignis auslösen, zeichnen Sie es einfach auf. Wenn die Erstellung abgeschlossen ist, können Sie mit diesen Informationen alles tun, was Sie möchten.

In der Dokumentation here und here erfahren Sie, wie Sie einen benutzerdefinierten Logger schreiben.

Verwandte Themen