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.targets
IDE 経由で 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 の私のフォーク) を試してください。