2013-09-02 8 views
175

Ho creato un file MSBuild .targets personalizzato che ho incluso in un progetto Delphi XE tramite l'IDE e abilitato dal menu di scelta rapida del Project Manager. Sebbene il file venga convalidato, viene sempre disabilitato dopo aver salvato nuovamente il file di progetto.Delphi XE target di build personalizzato è sempre disabilitato

Ecco una versione semplificata del file target, denominata Custom.targets.

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

come file stand-alone funziona come previsto: scrivendo ...

MSBuild Custom.target /t:Hello 

... nella riga di comando dà il messaggio previsto.

Aggiunta Custom.targets a un progetto Delphi tramite l'IDE visualizza il file nel Project Manager come previsto, e il file .dproj ora contiene la linea ...

<TargetsFile Include="Custom.targets"/> 

right-clic sul file nel IDE Project Manager e selezionato Enable. Ma quando il progetto è costruito viene visualizzata la finestra Build messaggio:

[MSBuild Attenzione] Custom.targets (1): Ignorando import disabilitato: PathToProjectSource\\Custom.targets

destro cliccando nuovamente in Project Manager mostra ancora il L'opzione Enable invece del previsto Disable.

Alla riga comandi MSBuild ProjectName.dproj /t:Hello non riesce.

Ho provato l'hacking il file .dproj aggiungere la riga ...

<Import Project="Custom.targets"/> 

Digitando MSBuild ProjectName.dproj /t:Hello ora funziona. Ma la prossima volta che salverò il file di progetto dall'IDE, verrà rimossa l'istruzione <Import>.

Qualcuno ha idea di cosa sta andando storto, per favore?

+10

Nel tuo esempio di utilizzo msbuild dalla linea di comando si mostra _Custom.target_ mentre in tutto il mondo altrimenti usi _Custom.targets_. Cos'è questo? –

+4

Buon posto - non me ne ero accorto nonostante stavo guardando il codice. Non riesco ad arrivare a una macchina con Delphi per alcuni giorni (in ospedale!), Ma cercherò il codice usando "target" o "target" coerentemente quando posso. – delphidabbler

+6

Non un utente Delphi, ma secondo [questo] (http://docs.embarcadero.com/products/rad_studio/delphiAndcpp2009/HelpUpdate2/EN/html/devcommon/targetsfiles_xml.html) _Tutti i file .targets devono contenere script MSBuild validi privo di errori.Se il file presenta errori, si viene avvisati e, se il progetto fa riferimento al file .targets non valido, viene disabilitato e non può essere riattivato fino a quando gli errori non vengono corretti. Potrebbe essere utile ricontrollare tutto è corretto in quanto ciò spiega sintomi che stai ricevendo. –

risposta

1

Delphi genera l'intero contenuto di dproj stesso e questa importazione personalizzata verrà sempre eliminata.

È possibile scrivere i propri file xml di msbuild ma il dproj appartiene a Delphi.

A meno che tu non abbia il codice sorgente o sei disposto a fare lo scemo, non puoi farlo.

Se si vuole veramente un modo XML flessibile per costruire progetti Delphi e creare obiettivi bizzeffe cercano vogliono o vogliono vNext (la forchetta sul bitbucket)

Problemi correlati