如何用D2007区分编译和构建?

时间:2013-10-15 12:30:19

标签: delphi delphi-2007 toolsapi

我已成功注册了IDE通知程序(IOTAIDENotifier80),因此我收到了AfterCompile通知。

是否有可能找出项目是否构建而不仅仅是编译/制作?

我发现this answer关于实施IOTAProjectCompileNotifier,但在D2007中无法使用。

还有其他方式吗?我没有问题,因为这只适用于内部专家。

更新:我需要使用包含版本信息资源的外部.rc文件复制“AutoInc内部版本号”功能。也许这可以通过BuildEvents完成?虽然我喜欢在IDE中记录消息的能力,但显示更新的版本号...

1 个答案:

答案 0 :(得分:1)

我不知道写专家或挂钩IDE,我害怕蹦床。话虽如此,我注意到你可以通过监视项目输出文件夹中文件的时间戳来区分编译和构建,但是如果没有代码(* .pas或* .dfm),这种区别就很明显了。自上次编译或构建以来已发生变化。换句话说,当代码更改时,您无法通过监视时间戳来区分。但是,当自上次编译或构建以来没有代码更改时,编译只会更改exe的时间戳(dcu时间戳不会更改)。

因此,在没有其他更优雅的解决方案的情况下,只有当您真的非常渴望获得这些信息时(例如,它是编译还是构建?),我可以为您推荐一个由2部分组成的解决方案。

第1部分。编写一个进程来监视输出文件夹中时间戳的更改,并

第2部分。告诉你的开发人员D2007中有一个错误会使你的构建过程变得复杂,但只需编译两次或构建两次就可以轻松克服这个错误(或者如果你知道如何实现自动化,那就去生活吧)。如果您可以让开发人员编译两次或构建两次,那么在第二次编译或构建时,您将能够通过测试dcu的时间戳是否在第二次编译或构建时更改来推断它是编译还是构建。

现在,我会站在顽皮的角落,问自己“为什么是我?”。欢呼声。