2016-04-07 13 views
-1

Ist es möglich, ein Array, eine Liste oder ein Objekt aus einem benutzerdefinierten Logger zurückgeben?Rückgabe einer Sammlung von benutzerdefinierten Msbuild-Logger

Ich möchte alle von MSBuild generierten Fehler und Warnungen hinzufügen und sie in einem Array speichern, dann dieses Array an mein Build-Skript zurückgeben und bei Bedarf darüber berichten.

Ist das möglich?

+0

Könnte möglich sein, aber was hast du bisher versucht? SO ist keine "bitte geben Sie mir den Code" -Seite, so wie es aussieht, wird Ihre Frage bald geschlossen werden. Schreiben eines benutzerdefinierten Loggers ist relativ einfach und es gibt Code-Beispiele überall, also versuchen Sie es zuerst und dann, wenn Sie ein tatsächliches Problem treffen, kommen Sie hier mit etwas Code zurück und geben Sie das genaue Problem an. – stijn

+0

Hallo stijn, danke für deinen Kommentar. Ich suche keinen Code. Ich fragte, ist es möglich. Ich habe mich an vielen Beispielen umgeschaut und habe noch keine gesehen, bei denen etwas vom benutzerdefinierten Logger zurückgegeben wird. –

Antwort

0

Sie können dies nicht direkt tun: Ein Logger wird an die Build-Engine übergeben, wenn er wie in der Befehlszeile konfiguriert ist, und es scheint keine Möglichkeit zu geben, danach innerhalb eines msbuild-Skripts darauf zuzugreifen. Programmatisch, vielleicht, aber wieder würde ich nicht wissen, wie das geht. Darüber hinaus hält sich ein Logger an die ILogger-Schnittstelle und das ist alles, was msbuild sieht, so dass die von Ihnen hinzugefügten Methoden sowieso nicht zugänglich sind.

Es gibt jedoch Problemumgehungen: siehe zum Beispiel this. Der Trick besteht darin, dass auf die DLL, die Ihre benutzerdefinierte Logger enthält, innerhalb von Msbuild zugegriffen werden kann. Wenn Sie einen Logger haben, der Ereignisse sammelt und in einer statischen Liste in der DLL speichert, kann auf dieselbe Liste mit einer benutzerdefinierten Aufgabe in derselben DLL zugegriffen werden. Stellen Sie sicher, dass die Aufgabe die statische Liste als ItemGroup erneut an das Skript msbuild zurückgibt, und Sie können loslegen.

+0

Brilliant Stijn, genau das, was ich gesucht habe. –

Verwandte Themen