我有一个有很多依赖项的小项目。我更改了项目中的一个文件,并注意到MSBuild也重新编译了所有依赖项。什么可能导致这个?这是默认行为,如果是,我该如何更改?
如果重要的话我正在通过命令行编译(而不是从visual studio编译)
答案 0 :(得分:0)
它可以构建它们,或者只是检查依赖项以确定它们是否需要重建。
首先,解决方案中有哪些项目?更模糊的项目类型可能具有未考虑增量构建的目标,并且可能存在错误行为(例如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”开关并行构建您的依赖项!