MSBuild: Die Eingabe und Ausgabe von Zielen schlägt bei der ersten Ausführung fehl

8

Ich habe ein Build-Ziel, das ich versuche, in MSBuild auszuführen. Das Target hat einige Inputs und Outputs, die ich dort platziert habe, um die Zeit im Falle eines intermediären Builds zu beschleunigen. Die Eingabedateien sind immer vorhanden (Headerdateien), andererseits sind die Ausgaben nicht immer vorhanden (XML-Dateien).

Ein Zwischenaufbau, der möglicherweise die Aufgabe überspringt, ist durchaus wünschenswert, da er in Bezug auf die Leistung ziemlich teuer ist.

Wie auch immer, die Ein- und Ausgänge funktionieren großartig IF die Ausgänge sind bereits vorhanden. In diesem Fall gibt MSBuild eine sehr hilfreiche Nachricht aus, dass das Ziel übersprungen wird, da alle Dateien aktuell sind.

Dies ist der Fall, wenn das Ausgabeverzeichnis und die Dateien nicht existieren (das erste Mal, wenn diese Aufgabe ausgeführt wird), dass MSBuild mit der folgenden Meldung fehlschlägt:

  

Überspringe Ziel [Zielname], weil es keine Ausgaben hat.

Hinzufügen Detaillierte Ausführlichkeit sagt mir, der Grund ist, weil die @ (OutputXML) Elemente leer sind. Ok, was nun? Es scheint daher nicht, dass das gesamte Konzept der Intermediate Builds in MSBuild dann sehr robust ist.

Meine Frage ist, wie kann ich den Vorteil eines Zwischen Builds bekommen und trotzdem dieses Ziel ausführen lassen, wenn es keine Ausgänge gibt? (Ich hoffe, ich muss nicht auf meine eigene Aufgabenerweiterung zurückgreifen)

Hier ist der relevante Teil meines Build-Skripts:

%Vor%

Hinweis: Ich war über Google, MSDN, und diese Website versucht, eine Antwort zu finden und bisher nicht erfolgreich gewesen. Obwohl ich sehr hilfreiche Informationen über MSBuild im Allgemeinen gefunden habe.

    
C Johnson 16.03.2013, 15:17
quelle

1 Antwort

6

Was ist mit einer Dummy-Ausgabe?

%Vor%

Wenn Sie OutputDir auf dummy.xml setzen, ist es nicht mehr leer, auch wenn die Datei nicht existiert. Der Platzhalter zeigt an, dass Sie nach einer .xml-Datei suchen und keine gefunden haben, aber die Benennung einer bestimmten Datei würde keine Suche durchführen und es ist daher egal, ob sie existiert oder nicht.

    
MikeR 18.03.2013, 08:56
quelle

Tags und Links