Delphi XE 构建事件.. 全局设置?

11

我开始在XE中大量使用构建事件系统,但有一件事情引起了我的注意,就是我无法在默认项目设置中设置默认的构建事件。是否有任何解决方案/技巧/方法可以实现这一点?如果可能的话,我正在查看bin目录中的CodeGear.Group.Targets和CodeGear.Delphi.Targets,那么我应该在哪里寻找呢?

谢谢


1
+1。我也非常希望这样做。每次我构建某些东西时,我都希望有一个.bat文件来执行。现在我必须将此脚本添加到每个新项目中,这很烦人。 - Andreas Rejbrand
1
欢迎来到StackOverflow,Jen。很高兴看到你第一次提出了一个好问题并且回答得很好。 :) - Mason Wheeler
谢谢 :) 我已经玩弄了几天,当然,在询问之后的半个小时内我就想出来了 lol... 希望 Embarcadero 在下一个版本中实现这样的功能,而不是依赖于一个临时解决方案。 - Jen Smith
2个回答

15

啊哈,我自己回答了这个问题。(是否有删除按钮?哈哈)

我做了些实验,添加了一些易于查找的预先和后置构建事件(即启动注册表编辑器和记事本..)

在Delphi的bin目录中有一个名为CodeGear.Delphi.Targets的文件。在导入部分之后,我添加了以下内容:

<PropertyGroup>
     <PreBuildEvent><![CDATA[regedit.exe]]></PreBuildEvent>
     <PostBuildEvent><![CDATA[notepad.exe $(MSBuildProjectFile)]]></PostBuildEvent>
</PropertyGroup>

重启了IDE,创建了一个新的空项目,并在预构建和后构建时执行这些程序。请注意,虽然它们不会出现在项目配置屏幕上,但您可以覆盖它们,否定CodeGear.Delphi.Targets文件中放置的任何内容。这很省钱,但似乎能达到效果,如果需要,在特定项目上仍然可以覆盖它(当然一定要备份原始文件)。


3
如果你在其他人之前解决了问题,那么在SO上回答自己的问题是完全可以的! - David
1
到目前为止,我只在SO上问了一个问题,然后自己回答了它!但是请将这些问题留在SO上,这样其他人就可以找到你的答案。 - Gerry Coll

1
@Jen Smith:非常聪明。如果有人感兴趣,我现在已经使用了你的想法,在命令行构建的过程中让madExcept来修补二进制exe文件,而不需要定制特定的项目。
将以下代码放在CodeGear.Delphi.Targets的“Import”部分之后即可。
  <PropertyGroup>
    <PostBuildEvent><![CDATA["$(programFilesx86)\madCollection\madExcept\Tools\madExceptPatch.exe" "$(DCC_ExeOutput)$(MSBuildProjectName).exe" "$(MSBuildProjectDirectory)\$(MSBuildProjectName).mes"]]></PostBuildEvent>
  </PropertyGroup>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接