我们有一个 C++Builder XE 项目(VCL 表单应用程序),其中包含几十个表单和单元。每当添加、删除或重命名属于项目的文件时,IDE 应该做两件事:
- 如果受影响的单元是窗体或框架,则会在项目源文件 (ProjectName.cpp) 中添加或更改对 USEFORM 宏的调用
- 添加或更改项目文件 (ProjectName.cbproj) 中的 CppCompile 元素
但是,IDE 不仅会进行必要的更改,还会对一些现有的 USEFORM 和 CppCompile 记录进行洗牌,即使它们不受更改的影响。如果我添加一个单元(cpp 和头文件),则即使不需要对项目源进行任何更改,也会对 USEFORM 进行改组,仅对 cbproj 文件进行更改。
我没有看到新订单如何形成的具体模式。如果我编辑或重命名单个单元,大约一半的 USEFORM 似乎改变了位置,只有几个或没有 CppCompile 记录。如果在两台不同的机器上对项目的副本进行更改,大多数更改似乎相似,但不是全部。这表明重新排序不是随机的。
当使用 Subversion 合并更改时,该行为会导致问题,因为它强制手动解决更改顺序造成的冲突。
所以问题是:什么可能导致上述行为以及如何摆脱它?