Criei um .targets
arquivo MSBuild personalizado que incluímos em um projeto Delphi XE por meio do IDE e o habilitei no menu de contexto do gerente de projeto. Embora o arquivo valide, ele sempre será desativado depois que eu salvar novamente o arquivo do projeto.
Aqui está uma versão simplificada do arquivo de alvos, com o nome Custom.targets
.
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Target Name="Hello">
<Message Text="Hello from custom target"/>
</Target>
</Project>
Como um arquivo autônomo, isso funciona conforme o esperado: digitando ...
MSBuild Custom.target /t:Hello
... na linha de comando, fornece a mensagem esperada.
Adicionar Custom.targets
um projeto Delphi via IDE exibe o arquivo no gerente de projeto conforme o esperado, e o .dproj
arquivo agora contém a linha ...
<TargetsFile Include="Custom.targets"/>
Clique com o botão direito do mouse no arquivo no Gerenciador de projetos do IDE e selecione Enable
. Mas quando o projeto é construído, a Build
janela de mensagem é exibida:
[MSBuild Warning] Custom.targets (1): Ignorando a importação desabilitada:
PathToProjectSource\\Custom.targets
Clicar com o botão direito do mouse novamente no Gerenciador de projetos ainda mostra a Enable
opção em vez da esperada Disable
.
Na linha de comando MSBuild ProjectName.dproj /t:Hello
também falha.
Eu tentei invadir o .dproj
arquivo para adicionar a linha ...
<Import Project="Custom.targets"/>
Digitar MSBuild ProjectName.dproj /t:Hello
agora funciona. Mas na próxima vez que eu salvar o arquivo do projeto no IDE, a <Import>
instrução será removida.
Alguém tem alguma idéia do que está errado, por favor?
/t:Hello
e do IDE com o botão direito do mouse em Gerente de Projeto - Destinos - Olá. Eu adicioneiCustom.targets
ao projeto clicando com o botão direito no Project Manager - Add - (navegados para o arquivo). O caminho é o mesmo diretório que o arquivo .dproj.Respostas:
O Delphi gera todo o conteúdo do dproj e essa importação personalizada sempre será excluída.
Você pode escrever seus próprios arquivos xml msbuild, mas o dproj pertence ao Delphi.
A menos que você tenha código-fonte ou esteja disposto a corrigir o código, você não pode fazer isso.
Se você realmente quer uma maneira xml flexível para criar projetos delphi e criar alvos em abundância, tente ou queira vnext (meu fork no bitbucket)
fonte
Eu incluiria o arquivo de destinos manualmente e construiria externamente usando o MSBuild, e não a partir do IDE, porque, ao compilar a partir do IDE, é um pouco confuso saber qual configuração e destino você aplicou (foi o que clicou no projeto? destino ativado? você não recebe nenhuma dica visual de que um destino personalizado está ativado).
Eu costumo fazer isso antes
Import Project="$(BDS)\Bin\CodeGear.Delphi.Targets"
para que eles não apareçam no IDE (eles existem, mas estão ocultos para os desenvolvedores).Por exemplo, meus projetos Delphi XE4 terminam com:
Meu arquivo .targets define um "PropertyGroup" e um "Target" personalizados com uma condição, portanto eles serão aplicados somente quando chamados no MSBuild:
Em seguida, compile-o com:
O uso dessa abordagem permite personalizar os alvos de compilação para garantir que todos os aplicativos obtenham as configurações corretas sem serem afetados pelas alterações feitas por ninguém.
fonte