始终禁用Delphi XE自定义生成目标

del*_*ler 177 delphi msbuild delphi-xe

我已经创建了一个自定义的MSBuild .targets文件,我通过IDE将其包含在Delphi XE项目中,并从项目管理器的上下文菜单中启用它.虽然文件验证,但在重新保存项目文件后它总是被禁用.

这是目标文件的简化版本,名为Custom.targets.

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <Target Name="Hello">
    <Message Text="Hello from custom target"/>
  </Target>
</Project>
Run Code Online (Sandbox Code Playgroud)

作为一个独立的文件,这按预期工作:输入...

MSBuild Custom.target /t:Hello
Run Code Online (Sandbox Code Playgroud)

...在命令行中给出了预期的消息.

Custom.targets通过IDE 添加到Delphi项目会按预期在项目管理器中显示该文件,该.dproj文件现在包含该行...

<TargetsFile Include="Custom.targets"/>
Run Code Online (Sandbox Code Playgroud)

我在IDE的项目管理器中右键单击该文件并进行选择Enable.但是在构建项目时,Build消息窗口显示:

[MSBuild警告] Custom.targets(1):忽略禁用导入: PathToProjectSource\\Custom.targets

在项目管理器中再次右键单击仍显示该Enable选项而不是预期Disable.

在命令行MSBuild ProjectName.dproj /t:Hello也失败了.

我试过黑客攻击.dproj文件添加行...

<Import Project="Custom.targets"/>
Run Code Online (Sandbox Code Playgroud)

打字MSBuild ProjectName.dproj /t:Hello现在有效.但是下次我从IDE保存项目文件时,<Import>语句将被删除.

有人知道出了什么问题吗?

War*_* P 2

Delphi 自己生成整个 dproj 内容,并且此自定义导入将始终被删除。

您可以编写自己的 msbuild xml 文件,但 dproj 属于 Delphi。

除非你有源代码或者愿意给 IDE 打补丁,否则你不能这样做。

如果你真的想要一种灵活的 xml 方式来构建 delphi 项目并创建大量目标,请尝试want或want vnext(我在bitbucket上的fork)