gpt4 book ai didi

delphi - MSBuild 中的空行而不是任务控制台输出

转载 作者:行者123 更新时间:2023-12-03 15:49:53 25 4
gpt4 key购买 nike

我的产品正在从 Delphi 6 迁移到较新的 Delphi XE3。 Delphi 6 编译器用于输出编译为可执行文件的文件列表:

Borland Delphi Version 14.0
Copyright (c) 1983,2002 Borland Software Corporation

ProjectName.dpr(X)
...
PathToSomeUnit.pas(X)
...
PathToSomeIncludedFile.inc(X)
...
X lines, X.XX seconds, X bytes code, X bytes data.

其中“X”表示一些数字

我们有一个内部软件,用于分析应用程序和特定文件(单元和包含文件)之间的依赖关系。该软件使用 dcc32 控制台输出(如上面的这个)作为其输入。

在新的 Delphi XE3 中,我们不再直接调用 dcc32,而是使用 MSBuild。不幸的是,控制台输出与 Delphi 6 不同。当“安静编译”选项被禁用时,控制台输出有多个空行来代替编译的文件列表。

Embarcadero Delphi for Win32 compiler version 24.0
Copyright (c) 1983,2012 Embarcadero Technologies, Inc.

[multiple blank lines]

X lines, X.X seconds, X bytes code, X bytes data. (TaskId:65)

使用/verbosity:diagnostic 参数,如下所示

Embarcadero Delphi for Win32 compiler version 24.0 (TaskId:65)
Copyright (c) 1983,2012 Embarcadero Technologies, Inc. (TaskId:65)
(TaskId:65)
(TaskId:65)
(TaskId:65)
(TaskId:65)
(TaskId:65)
(TaskId:65)
...
X lines, X.X seconds, X bytes code, X bytes data. (TaskId:65)

直接调用 dcc32 时,也出现了类似的问题,但通过“-B”编译器开关(-B = 构建所有单元)解决了该问题。我通过添加/p:DCC_AdditionalSwitches=-B 尝试了与 MSBuild 类似的方法,但它仍然输出多个空行。

最佳答案

这是一个可能的解决方案:

  1. 备份您的文件等。
  2. 打开 .NET Framework SDK v2.0 命令提示符。
  3. 反汇编 Borland.Build.Tasks.Delphi.dll(位于 $(BDS)\bin 目录中):

    ildasm Borland.Build.Tasks.Delphi.dll/out=Borland.Build.Tasks.Delphi.il

  4. 编辑 Borland.Build.Tasks.Delphi.dcctask.xml(由上一步创建)并注释掉 Ignore 子节点OutputParsing 节点。

  5. 重新组装:

    ilasm Borland.Build.Tasks.Delphi.il/dll

  6. 为其注册一个强名称异常(exception):

    sn -Vr Borland.Build.Tasks.Delphi.dll

如果您按照this answer中所述关闭了安静模式,使用 MSBuild 构建 Delphi 项目现在应该显示详细的编译器输出。

关于delphi - MSBuild 中的空行而不是任务控制台输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33014260/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com