问题 Delphi XE在全球范围内构建活动?


开始在XE中的构建事件系统中大量使用,但我注意到的一件事是我无法在默认项目设置中设置默认构建事件。是否存在任何可行的解决方法/黑客攻击?我正在查看bin目录中的CodeGear.Group.Targets和CodeGear.Delphi.Targets,如果这是可行的,那么我应该在哪里看?

谢谢


8249
2017-12-15 14:13


起源

+1。我也非常喜欢这个。每当我构建一些东西时,我想要一个.bat来执行。现在我必须将此脚本添加到每个新项目中,这很烦人。 - Andreas Rejbrand
欢迎来到StackOverflow,Jen。很高兴看到你第一次能够提出一个好问题并给出一个好的答案。 :) - Mason Wheeler
谢谢:)玩了几天,玩了几天,当然我在询问它之后半小时就弄明白了...希望Embarcadero用它们的下一个版本实现这样的东西,而不是依赖它在一个kludge。 - Jen Smith


答案:


啊哈。回答了我自己的问题。 (某处有删除按钮吗?哈哈)

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

在Delphi的bin目录中有一个名为CodeGear.Delphi.Targets的文件。在里面,在导入部分后,我补充说:

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

重新启动IDE,一个新的空项目在构建前和后期执行这些程序。请注意,它们不会显示在项目配置屏幕上,但您可以覆盖它们,否定在CodeGear.Delphi.Targets文件中放置的内容。便宜,但它似乎可以解决问题,如果需要在特定项目上,你仍然可以覆盖它。 (当然,请确保备份原始文件。)


15
2017-12-15 14:47



如果你在其他人之前弄明白的话,回答你自己的问题就完全可以了! - David M
到目前为止,我只问了一个关于SO的问题,然后自己回答了!但是将这些问题留在SO中,以便其他人可以找到答案。 - Gerry Coll


@Jen Smith:非常聪明。如果有人感兴趣,我现在用你的想法疯狂除了修补二进制exe作为命令行构建的一部分而不必定制特定的项目..:

把它放在CodeGear.Delphi.Targets的'Import'部分之后..

  <PropertyGroup>
    <PostBuildEvent><![CDATA["$(programFilesx86)\madCollection\madExcept\Tools\madExceptPatch.exe" "$(DCC_ExeOutput)$(MSBuildProjectName).exe" "$(MSBuildProjectDirectory)\$(MSBuildProjectName).mes"]]></PostBuildEvent>
  </PropertyGroup>

1
2017-07-08 21:44