2016-08-01 11 views
1

ich einige benutzerdefinierte Logger für mein MSBuild Prozess geschrieben haben und es funktioniert über die Befehlszeile fein:Geben Sie einen Logger in MSBuild Konfigurationsdatei

msbuild <project> /logger:mylogger.dll 

die Frage ist nun, wie soll ich meine benutzerdefinierte Logger in die angeben .csproj-Datei, so dass beim Erstellen von Visual Studio mein benutzerdefinierter Logger genauso verwendet wird, wie ich ihn beim Ausführen von msbuild über die Befehlszeile verwende.

Ich habe nichts gefunden, das here oder here zu tun.

+0

Sie nicht? Sie tun ein '' und Sie sollten sehen, dass das in Ihrer Logging-Logik erscheint. – rene

+0

Meine Frage ist, wie ich meinen benutzerdefinierten Logger in der .csproj-Datei angeben kann, damit beim Erstellen von Visual Studio mein Logger verwendet wird. – Luis

Antwort

2

Dies ist nicht möglich. In der MSBuild-API muss RegisterLogger aufgerufen werden, bevor der Build gestartet wird. Sie sollten die Build-Konfiguration nicht ändern, während der Build bereits läuft. Sie können dies möglicherweise hacken, indem Sie einen benutzerdefinierten MSBuild-Task erstellen, der einen neuen Logger in der Mitte des Builds hinzufügt, aber das würde mehr Probleme verursachen, als gelöst werden können, da die Loggerkonfiguration pro Buildmodul und nicht pro Projekt erfolgt, also beim Hinzufügen/Logger entfernen, alle Projekte, die am Build beteiligt sind, sind betroffen.

+0

Nun, wenn es nicht möglich ist zu sagen, dass "der Build bereits läuft" ist ein schlechter Grund IMHO, da viele Optionen konfigurierbar sind (gemäß der Dokumentation, Eigenschaften und PropertyGroups). Ich denke, wenn Sie Recht haben, ist es eine fehlende Funktion ... oder sogar ein Fehler, da ich keine andere Option in der Msbuild-Befehlszeile finden kann, die in den Konfigurationsdateien nicht verfügbar ist. – Luis

+1

@Luis, ich denke, das ist kein Fehler oder fehlende Funktion. Ich denke, das wäre ziemlich widersprüchlich und würde viel Verwirrung stiften, wenn ein Projekt sich dazu entschließen würde, seinen eigenen Logger zu verwenden. Imaging Sie haben dieses "Feature" in MSBuild implementiert und Sie erstellen ein Produkt, das 100 Projekte enthält - Sie beginnen, Ihr Top-Level-Projekt zu erstellen, und die verbleibenden 99 werden über MSBuild-Projektreferenzen aufgerufen. Was passieren würde, wenn die Build-Version Ihr spezielles Projekt entdeckt, das spezielle Logger-Einstellungen benötigt, könnte der größte Teil des Builds abgeschlossen sein. Logger werden aus einem bestimmten Grund vorab angegeben. –

+0

Okay, also gebe ich dir das ganze Bild: Ich möchte die Anzahl der von einem Build erkannten Warnungen ermitteln. Diese einfache Sache ist in VS nicht möglich. Ich muss einen Logger implementieren (keine Ahnung warum, aber es scheint der EINZIGE Weg zu sein) und wenn ich es mache, kann ich es nicht von VS benutzen. All dies treibt mich zu glauben, dass VS saugt. – Luis

Verwandte Themen