Ich habe eine benutzerdefinierte MSBuild- .targets
Datei erstellt, die ich über die IDE in ein Delphi XE-Projekt aufgenommen und über das Kontextmenü des Projektmanagers aktiviert habe. Obwohl die Datei validiert wird, wird sie immer deaktiviert, nachdem ich die Projektdatei erneut gespeichert habe.
Hier ist eine vereinfachte Version der Zieldatei mit dem Namen Custom.targets
.
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Target Name="Hello">
<Message Text="Hello from custom target"/>
</Target>
</Project>
Als eigenständige Datei funktioniert dies wie erwartet: Tippen ...
MSBuild Custom.target /t:Hello
... in der Befehlszeile gibt die erwartete Nachricht.
Beim Hinzufügen Custom.targets
zu einem Delphi-Projekt über die IDE wird die Datei wie erwartet im Projektmanager angezeigt, und die .dproj
Datei enthält jetzt die Zeile ...
<TargetsFile Include="Custom.targets"/>
Ich habe mit der rechten Maustaste auf die Datei im Projektmanager der IDE geklickt und ausgewählt Enable
. Wenn das Projekt erstellt wird, wird das folgende Build
Meldungsfenster angezeigt:
[MSBuild-Warnung] Custom.targets (1): Deaktivierten Import ignorieren:
PathToProjectSource\\Custom.targets
Wenn Sie im Projektmanager erneut mit der rechten Maustaste klicken, wird weiterhin die Enable
Option anstelle der erwarteten angezeigt Disable
.
An der Kommandozeile MSBuild ProjectName.dproj /t:Hello
schlägt ebenfalls fehl.
Ich habe versucht, die .dproj
Datei zu hacken , um die Zeile hinzuzufügen ...
<Import Project="Custom.targets"/>
Das Tippen MSBuild ProjectName.dproj /t:Hello
funktioniert jetzt. Aber wenn ich das nächste Mal die Projektdatei aus der IDE speichere, wird die <Import>
Anweisung entfernt.
Hat jemand eine Idee, was bitte falsch läuft?
/t:Hello
sowie von der IDE mit Rechtsklick im Projektmanager - Ziele - Hallo. Ich habeCustom.targets
dem Projekt hinzugefügt , indem ich mit der rechten Maustaste in den Projektmanager - Hinzufügen - geklickt habe (nach der Datei gesucht). Der Pfad ist dasselbe Verzeichnis wie die .dproj-Datei.Antworten:
Delphi generiert den gesamten dproj-Inhalt selbst und dieser benutzerdefinierte Import wird immer gelöscht.
Sie könnten Ihre eigenen msbuild-XML-Dateien schreiben, aber das dproj gehört zu Delphi.
Wenn Sie keinen Quellcode haben oder bereit sind, die Idee zu patchen, können Sie das nicht tun.
Wenn Sie wirklich eine flexible XML-Methode zum Erstellen von Delphi-Projekten und zum Erstellen von Zielen in Hülle und Fülle wünschen, versuchen Sie, vnext zu wollen oder zu wollen (meine Gabel auf bitbucket).
quelle
Ich würde die Zieldatei manuell einschließen und extern mit MSBuild anstatt aus der IDE erstellen, da es beim Kompilieren aus der IDE etwas unübersichtlich ist, zu wissen, welche Konfiguration und welches Ziel Sie angewendet haben (ist diejenige, auf die das Projekt geklickt hat? Oder die von aktiviertes Ziel? Sie erhalten keinen visuellen Hinweis darauf, dass ein benutzerdefiniertes Ziel aktiviert ist.
Normalerweise mache ich das vor dem,
Import Project="$(BDS)\Bin\CodeGear.Delphi.Targets"
damit sie nicht in der IDE angezeigt werden (sie existieren, sind aber für Entwickler verborgen).Zum Beispiel enden meine Delphi XE4-Projekte mit:
Meine .targets-Datei definiert eine benutzerdefinierte "PropertyGroup" und "Target" mit einer Bedingung, sodass sie nur gelten, wenn sie von MSBuild aufgerufen werden:
Dann kompilieren Sie es mit:
Mit diesem Ansatz können Sie Build-Ziele anpassen, um sicherzustellen, dass jede Anwendung die richtigen Einstellungen erhält, ohne von Änderungen betroffen zu sein.
quelle