Meine benutzerdefinierten MSBuild-Aufgaben führt einige Schritte vor und nach dem tatsächlichen Build. Es ist wichtig, dass die Schritte nach dem Build immer ausgeführt werden, um einige Dateien zu bereinigen. Im Moment habe ich zwei Ziele definiert:Führen Sie ein MSBuild-Ziel nach einem fehlgeschlagenen Build aus
<Target Name="NrtPatchAssemblyInfo" BeforeTargets="BeforeBuild">
und
<Target Name="NrtRestoreAssemblyInfo" AfterTargets="AfterBuild">
Die erste wird immer dann ausgeführt, aber die zweite läuft erst nach einem erfolgreichen Build. Wenn der Build vom Compiler fehlgeschlagen ist, z. B. aufgrund eines Syntaxfehlers in einer Codedatei, wird das zweite Ziel nicht ausgeführt.
Was kann ich tun, um dies zu ändern und immer die zweite Aufgabe ausführen zu lassen?
Ich konnte keine Liste der Zielnamen finden, die MSBuild normalerweise verwendet. Diese Namen werden nur aus anderen Quellen kopiert.
Keine Ziele mehr, wenn man scheitert? Wie kann ich dann nach einem Fehler Bereinigungsarbeiten oder andere Maßnahmen durchführen? Das Kopieren der Visual Studio-Infrastruktur ist (noch) keine Option für mich. – ygoe
Sie könnten auch die Notwendigkeit der Bereinigung entfernen: viel einfacher zu beheben Imo. Erstellen Sie eine Kopie der Datei, für die Sie die Assembly-Informationen patchen möchten, kopieren Sie sie in das Zwischenverzeichnis, und verwenden Sie diese Kopie im Build. Es spielt keine Rolle, wenn die Änderungen an der Kopie nicht rückgängig gemacht werden. – stijn
Ich bin endlich auf dieses Thema zurückgekommen. Ich habe mein Tool geändert, um die Datei nicht zu patchen und wiederherzustellen, sondern die geänderte Datei in ein Objekt zu speichern und das (Include) anstelle der ursprünglichen Datei (Remove) zu verwenden. – ygoe