为什么Delphi命令行为IDE提供了不同的输出?

时间:2016-03-18 12:48:26

标签: delphi msbuild delphi-10-seattle

自从我搬到Delphi 10 Seattle以来,我的构建机器出了问题。尽管在构建计算机上使用MSBuild并设置了正确的配置,构建计算机仍会向IDE生成不同的结果。它在我的机器上做同样的事情,所以它与机器上的东西无关。到目前为止我能看到的差异是:

  1. 可执行文件大小不同。 39MB命令行MSBuild,35MB IDE构建。
  2. 我从命令行生成的可执行文件中出现整数溢出错误,而这不会发生在IDE中的可执行文件中。它们显然是两种不同的可执行文件。
  3. 在IDE中构建时,COM DLL为22mb,而在命令行上构建时,它大约为59mb。进一步的调查显示它实际上是将调试信息添加到发布配置中关闭的DLL DESPITE调试信息中。如果我设置“将调试信息放在一个单独的TDS文件中,那么我得到相同的22mb文件加上一个36mb的TDS文件。这证明了两件事。调试信息正在添加,我有正确的配置,因为这个改变有效果
  4. rsvars& MSBUILD / target:build / p:config = Release / p:platform = win32 project.dproj

    标记为重复的question并没有真正回答这个问题,它只是提示了要查看的内容。

1 个答案:

答案 0 :(得分:0)

问题是损坏的DProj文件。如何腐败很难说。但是很明显,在配置中设置了几个命令行选项 NOT 。它们似乎也从DCC32命令行中消失了MSBuild吐出来,但我开始怀疑我是不是错过了它们。这个项目最初可能至少是Delphi 6,所以一直在不断升级。为了解决这个问题,我删除了所有DPROJ,BDSPROJ和CFG文件,只留下了dpr文件。然后我打开了Delphi 10 Seattle中的dpr文件,它创建了新的dproj文件。我重置条件定义,搜索路径以及我想要的编译器和链接器选项以及中提琴,一切都恢复正常。