2013-09-02 12 views
175

Ich habe eine benutzerdefinierte MSBuild .targets-Datei erstellt, die ich in einem Delphi XE-Projekt über die IDE aufgenommen und aus dem Kontextmenü des Projekt-Manager aktiviert habe. Obwohl die Datei überprüft wird, wird sie immer deaktiviert, nachdem ich die Projektdatei erneut gespeichert habe.Delphi XE benutzerdefinierte Build-Ziel ist immer deaktiviert

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 Stand-alone-Datei dies wie erwartet funktioniert: Typisierung ...

MSBuild Custom.target /t:Hello 

... in der Befehlszeile gibt die erwartete Nachricht.

Custom.targets zu einem Delphi-Projekt über die IDE Hinzufügen zeigt die Datei im Projekt-Manager wie erwartet, und die .dproj Datei enthält nun die Linie ...

<TargetsFile Include="Custom.targets"/> 

ich die Datei in der IDE-rechts geklickt Projektmanager und ausgewählt Enable. Aber wenn das Projekt die Build zeigt Meldungsfenster eingebaut ist:

[MSBuild Warning] Custom.targets (1) Ignoriert deaktiviert Import: PathToProjectSource\\Custom.targets

Rechtsklick wieder noch in Project Manager zeigt die Enable Option anstelle der erwarteten Disable.

An der Befehlszeile MSBuild ProjectName.dproj /t:Hello schlägt auch fehl.

Ich habe versucht, Hacking die .dproj Datei die Zeile hinzufügen ...

<Import Project="Custom.targets"/> 

Typing MSBuild ProjectName.dproj /t:Hello jetzt funktioniert. Aber wenn ich das nächste Mal die Projektdatei von der IDE speichere, wird die <Import> Anweisung entfernt.

Wer hat eine Idee, was schief geht bitte?

+10

In Ihrem Beispiel msbuild von der Kommandozeile verwenden zeigen Sie _Custom.target_ während überall Andernfalls verwenden Sie _Custom.targets_. Welches ist es? –

+4

Guter Platz - das hatte ich nicht bemerkt, obwohl ich viel auf den Code starrte. Ich komme mit Delphi für ein paar Tage nicht auf eine Maschine (im Krankenhaus!), Werde aber den Code mit "Ziel" oder "Zielen" konsistent versuchen, wenn ich kann. – delphidabbler

+6

Kein Delphi-Benutzer, aber laut [this] (http://docs.embarcadero.com/products/rad_studio/delphiAndcpp2009/HelpUpdate2/EN/html/devcommon/targetsfiles_xml.html) _Alle .targets-Dateien müssen gültige MSBuild-Skripte enthalten frei von Fehlern.Wenn die Datei Fehler aufweist, werden Sie benachrichtigt, und wenn das Projekt auf die ungültige .targets-Datei verweist, ist es deaktiviert und kann erst wieder aktiviert werden, wenn die Fehler behoben wurden. _ Möglicherweise lohnt sich eine doppelte Überprüfung, da alles korrekt ist Symptome, die du bekommst. –

Antwort

1

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 die Dproj gehört zu Delphi.

Es sei denn, Sie haben Quellcode oder sind bereit, Affe Patch die ide Sie können das nicht tun.

Wenn Sie wirklich eine flexible XML-Art und Weise wollen in Hülle und Fülle delphi Projekte zu erstellen und erstellen Ziele versuchen oder vNext (meine Gabel auf bitbucket) wollen wollen

Verwandte Themen