Problem mit dynamisch generierten C # Dateien in msbuild
Frage
Ich habe eine XML-Quelldatei, die verwendet wird, um C # Dateien zu erstellen, die dann als Teil eines Projektes erstellt werden.
Zur Zeit habe ich ein Ziel, das Before mein XML in C # Konverter läuft.
Das Problem ist, dass durch die Zeit, die Before Schritt der alten Dateien ausgeführt wird offenbar durch das Build-System gespeichert wurden, so dass die neuen Dateien ignoriert werden.
Wie kann ich dieses Problem umgehen? Es scheint, dass Wandelt wäre der Weg sein, aber sie sind begrenzt, in dem, was sie tun können.
Lösung
Ich denke, Sie „durch das Build-System gespeichert“ übersetzt werden kann als die ItemGroup des CS- enthält Dateien, die Sie zusammenstellen wollen erzeugt wird, wenn die msbuild Datei gelesen wird, im Gegensatz zu, wenn die Kompilierung Ziel ausgeführt wird. Sie haben mehrere Möglichkeiten:
-
siehe
- <CreateItem> href="http://msdn.microsoft.com/en-us/library/s2y3e43x.aspx" rel="nofollow noreferrer"> CreateItem Aufgabe
-
<Output>
finden Sie unter Ausgangselement
Ich hoffe, das hilft.
Andere Tipps
Nun haben wir etwas ähnliches ish hier. Wir gen ein CS- aus einer XML-Datei, die eine .tt verwenden. Beide Dateien sind Teil eines spezifischen csproj. Eigenschaften- geht> Build auf dem csproj gibt diesen kleinen Ausschnitt in der Pre-Build-Ereignisse Befehlszeile:
del "$(ProjectDir)MyCsFile.cs"
copy /b /y "$(ProjectDir)\MyXmlFile.xml" "$(TargetDir)"
"$(ProjectDir)tt.bat" "$(ProjectDir)MyTemplateFile.tt"
Keine Ahnung, ob das ist, von Nutzen zu Ihnen, ich hoffe, dass es als letzte Chance Abhilfe ausreichen könnte.
Ich glaube, Sie uns ein wenig von Ihrer Regel zeigen müssen / Build-Datei. Sie sollten eine Regel / Abhängigkeit für die cs-Datei, die die XML als die Abhängigkeit hat.
Ich bin nicht sicher, was Sie unter „durch das Build-System gespeichert“ bedeuten
Überprüfen Sie die Regeln sorgfältig auf Fehler / Auslassungen.