Delphi XE custom build target is always disabled Ask Question

Delphi XE custom build target is always disabled Ask Question

I've created a custom MSBuild .targets file that I've included in a Delphi XE project via the IDE and enabled it from the Project Manager's context menu. Although the file validates, it always gets disabled after I re-save the project file.

Here's a simplified version of the targets file, named Custom.targets.

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

スタンドアロン ファイルとして、次のように入力すると期待どおりに動作します...

MSBuild Custom.target /t:Hello

...コマンドラインで期待どおりのメッセージが表示されます。

Custom.targetsIDE 経由で Delphi プロジェクトに追加すると、プロジェクト マネージャーに期待どおりにファイルが表示され、.dprojファイルに次の行が含まれるようになります...

<TargetsFile Include="Custom.targets"/>

IDE のプロジェクト マネージャーでファイルを右クリックし、を選択しましたEnable。しかし、プロジェクトがビルドされると、次のBuildメッセージ ウィンドウが表示されます。

[MSBuild 警告] Custom.targets(1): 無効なインポートを無視します:PathToProjectSource\\Custom.targets

プロジェクト マネージャーでもう一度右クリックすると、Enable予想どおりではなく、オプションが表示されますDisable

コマンドラインでMSBuild ProjectName.dproj /t:Helloも失敗します。

.dprojファイルをハッキングして行を追加しようとしました...

<Import Project="Custom.targets"/>

入力はMSBuild ProjectName.dproj /t:Helloできるようになりました。ただし、次に IDE からプロジェクト ファイルを保存すると、<Import>ステートメントが削除されます。

何が問題なのか分かる人はいますか?

ベストアンサー1

Delphi は dproj コンテンツ全体を生成し、このカスタム インポートは常に削除されます。

独自の msbuild xml ファイルを作成することもできますが、dproj は Delphi に属します。

ソース コードを持っているか、IDE にモンキー パッチを適用する意思がない限り、それを実行することはできません。

柔軟な XML 方式で Delphi プロジェクトを構築し、ターゲットを大量に作成したい場合は、want または want vnext (Bitbucket の私のフォーク) を試してください。

おすすめ記事