【问题标题】:MSbuild takes longer than expectedMSbuild 花费的时间比预期的要长
【发布时间】:2014-02-25 11:44:19
【问题描述】:

我有一个有很多依赖项的小项目。我更改了项目中的一个文件,并注意到 MSBuild 也重新编译了所有依赖项。什么可能导致这种情况?这是默认行为吗?如果是,我该如何更改?

如果重要的话,我将通过命令行(而不是从 Visual Studio)进行编译

【问题讨论】:

  • MSBuild 不会自行编译任何东西——它是一个工具。请提供有关您的操作的更多详细信息 - 您如何构建项目、哪些参数等。
  • 启用 MSBuild 日志记录,它会告诉一切。

标签: c# msbuild


【解决方案1】:

它可能正在构建它们,或者它可能只是检查依赖关系以确定它们是否需要重新构建。

首先,解决方案中有哪些类型的项目?更模糊的项目类型可能具有未考虑增量构建的目标,并且可能存在错误行为(例如 2012 SQL 项目总是在重建,因为它试图将 SQLVAR 参数解析为文件位置)。

这里有一些建议可以帮助您顺利上路:

首选文件记录器,让您无需依赖控制台缓冲区即可进行故障排除。

msbuild.exe MySolution.sln /fl3 /flp3:warningsonly;logfile=msbuild.wrn /fl4 /flp4:errorsOnly;logfile=msbuild.err /fl5 /flp5:Verbosity=diag;logfile=msbuild.log

这将生成三个日志,两个用于警告和错误,以及一个详细程度最高的日志。打开 msbuild.log 并确定其中一个依赖项的构建。

构建日志是否表明目标已被跳过?

Skipping target "CoreCompile" because all output files are up-to-date with respect to the input files.

或者他们被重建了?

Building target "SqlBuild" completely.

MsBuild 可以并行构建您的项目。 提高性能的另一个技巧是并行构建项目。 MsBuild 是调度程序,可以使用神奇的“/m”开关并行构建您的依赖关系!

【讨论】:

    猜你喜欢
    • 2016-05-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-30
    • 1970-01-01
    • 2020-04-01
    • 1970-01-01
    • 2021-09-18
    相关资源
    最近更新 更多