2 Stimmen

MSBuild ITaskItem-Array ist veraltet

Ich erstelle eine benutzerdefinierte ITask für MSBuild, die die Ausgabedateien von meinem Build hochlädt. Ich verwende ein Web-Deployment-Projekt, um meine App zu veröffentlichen und Hooking in das AfterBuild-Ziel, meine benutzerdefinierte Arbeit zu tun.

Wenn ich eine Datei zu meiner Webanwendung hinzufüge, erkennt meine benutzerdefinierte Aufgabe beim ersten Build die neu hinzugefügte Datei nicht. Damit die Datei in meinem Array von ITaskItems angezeigt wird, muss ich zunächst einen Build durchführen, bei dem mein "AfterBuild"-Ziel entfernt wurde, und dann den Build erneut starten, wobei mein "AfterBuild"-Ziel vorhanden ist.

So sieht meine Build-Datei aus:

<ItemGroup>
    <PublishContent Include="$(OutputPath)\**" />
</ItemGroup>

<Target Name="AfterBuild">
    <UploadTask FilesToPublish="@(PublishContent)" />
</Target>

Die Liste in @(PublishContent) scheint zu Beginn des Builds initialisiert zu werden, anstatt alle Änderungen widerzuspiegeln, die durch den Build-Prozess selbst stattgefunden haben könnten.

Irgendwelche Ideen?

Danke

1voto

Adam Punkte 27921

Ihre ItemGroup wird ausgewertet, wenn die Projektdatei zum ersten Mal geladen wird (wenn Sie Visual Studio zum ersten Mal öffnen oder wenn Sie das Projekt im Projektmappen-Explorer "entladen" und "neu laden").

Wahrscheinlich müssen Sie eine ItemGroup als Aufgabe in Ihrem "AfterBuild"-Ziel erstellen. Beispiel:

<CreateItem Include="$(OutputPath)\**">
      <Output TaskParameter="Include" ItemName="OutputFiles"/>
</CreateItem>

gefolgt von:

<Target Name="AfterBuild">
    <UploadTask FilesToPublish="@(OutputFiles)" />
</Target>

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X