我们目前使用Delphi 2009和GIT开发应用程序。我们已经设置了一个预构建脚本,使用来自git的信息生成版本号和构建ID,并将其编译为项目中包含的资源。问题是这个脚本不能在常规编译上运行。这意味着其他开发人员最终可能会在实际版本号和资源中的数量之间出现差异(特别是在git中切换分支时)。
由于我们使用我们的软件进行一些关键计算,我们希望使用此构建ID来重现计算并追踪问题。
除了试图强迫我的开发人员经常按shift-F9之外,我怎样才能确保预构建脚本在必要时运行(理想情况下在每次编译时)?
杰森
更新:预编译脚本确实在每次编译时运行。问题是我希望在git中制作标签后按F9获得不同的结果,即使没有代码发生变化。
答案 0 :(得分:3)
我们通过编写使用IOTAIDENotifier50接口的自定义IDE插件解决了类似的问题。特别是使用BeforeCompile方法,测试一些必需的项目设置,并生成动态版本信息(VERSIONINFO资源)。每种类型的构建(编译和构建)都会调用它。我们还生成一个唯一的exe序列号并记录所有内容,这有助于我们跟踪问题并且与您的脚本类似。为了完整起见,我们只在Delphi 2007和Delphi XE中完成了这项工作。
答案 1 :(得分:0)
预构建操作在每次编译之前都会运行。
您在评论中说明按F9时有时不会执行操作。这是有道理的,因为如果认为源已经改变,F9或Run只调用编译。
BeforeCompile通知程序插件的行为方式完全相同。您的解决方案是确保在使用Ctrl + F9运行之前进行编译。