Wie ändert sich die Ausführlichkeit der MSBuild-Aufgabe?

8

Ich hätte gerne eine andere Ausführlichkeit für das Msbuild-Projekt, das von der Befehlszeile aufgerufen wird, und für diejenigen, die von der MSBuild-Task innerhalb des Projekts aufgerufen werden. Zum Beispiel:

Inside my.proj:

%Vor%

Auf der Kommandozeile:

%Vor%

Jetzt, wenn die MSBuild-Aufgabe die .csproj-Dateien erstellt, macht sie das auch mit detaillierter Ausführlichkeit. Aber ich würde es mit minimaler Ausführlichkeit bauen wollen.

Ich weiß, dass es möglich ist, msbuild wie folgt manuell aufzurufen:

%Vor%

oder in der Praxis

%Vor%

und das funktioniert natürlich gut, aber dann kann ich die Funktionalität des Schalters BuildInParallel nicht mehr bekommen (Ich glaube nicht, dass es möglich ist, msbuild von der Kommandozeile aus mit mehreren Projekten aufzurufen, ohne dass sie in einer Lösung enthalten sind.)

Aktualisieren

Ich ging mit Ludwos Option: im Grunde eine benutzerdefinierte Logger erstellen, die zwei ConsoleLoggers als Mitglied enthält. Einer hat die Ausführlichkeit an der Befehlszeile übergeben, der andere ist "minimal". Der Logger registriert sich für alle Ereignisse und übergibt sie an einen der Logger, je nachdem, ob gerade eine csproj-Datei erstellt wird oder nicht. Die Ausgabe sieht genau wie normal aus, außer dass sie nicht Tausende von Zeilen aus den csproj-Dateien enthält.

    
stijn 23.10.2011, 10:43
quelle

1 Antwort

4

Sie haben zwei Möglichkeiten (mindestens) :)

  1. Erstellen Sie ein zusätzliches msbuild-Skript zum Erstellen von abc-Projekten "BuildABC.proj"

    %Vor%

    Führen Sie in Ihrem Parent-Skript MSBuild mit der Exec-Task und dem Aufruf aus "BuildABC.proj" mit minimaler Ausführlichkeit

    %Vor%

    Sie müssen alle im BuildABC-Projekt benötigten übergeordneten Eigenschaften explizit an den Parameter msbuild / p übergeben.

  2. Verwenden Sie benutzerdefinierte Protokollfunktion. Sehen Sie, wie es geht . In diesem Fall können Sie Ihr ursprüngliches Skript verwenden:

    %Vor%

    In Ihrem benutzerdefinierten Logger protokollieren Sie nichts, das mit z. "a.csproj" -Projekt zwischen ProjectStarted- und ProjectFinished-Ereignissen, wobei e.ProjectFile == "a.csproj" (zum Deaktivieren der Diagnoseprotokollierung für "a.csproj" -Projekt, während das übergeordnete Projekt mit ausführlicher Diagnose erstellt wird)

Ludwo 25.10.2011, 11:12
quelle

Tags und Links