2013-09-02 19 views
175

Stworzyłem niestandardowy plik MSBuild .targets, który zawarłem w projekcie Delphi XE za pośrednictwem IDE i włączono go z menu kontekstowego Menedżera projektu. Mimo że plik sprawdza, jest zawsze wyłączany po ponownym zapisaniu pliku projektu. Jest to uproszczona wersja pliku celów o nazwie Custom.targets.Delphi XE niestandardowy cel kompilacji jest zawsze wyłączony

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 
    <Target Name="Hello"> 
    <Message Text="Hello from custom target"/> 
    </Target> 
</Project> 

jako samodzielny plik ten działa zgodnie z oczekiwaniami: pisanie ...

MSBuild Custom.target /t:Hello 

... w wierszu poleceń daje oczekiwany komunikat.

Dodawanie Custom.targets projektu Delphi poprzez IDE wyświetla plik Kierownika Projektu zgodnie z oczekiwaniami, a plik .dproj zawiera teraz linię ...

<TargetsFile Include="Custom.targets"/> 

ja prawym przyciskiem myszy plik w IDE Kierownik projektu i wybrana Enable. Ale kiedy projekt jest zbudowany z Build pojawiają się komunikaty:

[MSBuild Warning] Custom.targets (1): Zignorowanie wyłączoną import: PathToProjectSource\\Custom.targets

prawym przyciskiem myszy ponownie w Project Manager nadal pokazuje Opcja Enable zamiast oczekiwanego Disable.

W linii komend MSBuild ProjectName.dproj /t:Hello również nie działa.

Próbowałem hacking plik .dproj dodać linię ...

<Import Project="Custom.targets"/> 

Wpisanie MSBuild ProjectName.dproj /t:Hello teraz działa. Ale następnym razem, gdy zapiszę plik projektu z IDE, zostanie usunięta instrukcja <Import>.

Ktoś wpadł na pomysł, co jest nie tak?

+10

W przykładzie zastosowania msbuild z linii poleceń można pokazać _Custom.target_ natomiast wszędzie w przeciwnym razie użyjesz _Custom.targets_. Który to jest? –

+4

Dobre miejsce - nie zauważyłem tego pomimo dużej wpatrywania się w kod. Nie mogę dostać się do komputera z Delphi przez kilka dni (w szpitalu!), Ale spróbuję kod używając "celu" lub "celów" konsekwentnie, kiedy będę mógł. – delphidabbler

+6

Nie jest użytkownikiem Delphi, ale zgodnie z tym (http://docs.embarcadero.com/products/rad_studio/delphiAndcpp2009/HelpUpdate2/EN/html/devcommon/targetsfiles_xml.html) _Wszystkie pliki .targets muszą zawierać poprawne skrypty MSBuild bez błędów.Jeśli plik zawiera jakiekolwiek błędy, zostaniesz o tym powiadomiony, a jeśli projekt odwoła się do niepoprawnego pliku .targets, zostanie on wyłączony i nie będzie można go ponownie włączyć, dopóki błędy nie zostaną naprawione ._ Może być warte podwójnego sprawdzenia, wszystko jest poprawne, ponieważ to wyjaśnia objawy, które otrzymujesz. –

Odpowiedz

1

Delphi generuje całą zawartość dproj, a ten niestandardowy import będzie zawsze usuwany.

Można napisać własne pliki msbuild xml, ale dproj należy do Delphi.

O ile nie masz kodu źródłowego lub chcesz skroić małpy ideę, której nie możesz zrobić.

Jeśli naprawdę chcesz elastyczną xml sposób budowania projektów Delphi i utworzyć cele mnóstwo medali spróbować chcesz lub chcą vnext (mój widelec na bitbucket)

Powiązane problemy