【发布时间】:2014-04-23 09:08:22
【问题描述】:
您好,我有一个使用自定义 msbuild 文件编译的解决方案。
最近我把我的机器从一台 Windows 7 机器换成了一台新的 Windows 8.1 机器。
在新机器上运行 msbuild 时,它无法构建解决方案,显然是因为它忽略了应该在其他项目之前构建的依赖项目。我的旧机器上的同一组文件不会发生这种情况。
- 两者都在运行 MSBuild 12.0.21005.1
- 两者都安装了 VS 2012 和 2013
- .NET Framwork v4 的补丁号在几个内部版本号之内,两者都在 4.0.30319.xxxx
这让我发疯了——新机器的全部意义在于更快地构建这个解决方案:)
任何人都可以提出明智的步骤来解决或至少诊断此问题吗?
更新:似乎 msbuild 认为没有任何变化。我收到了诸如Skipping target "CoreCompile" because all output files are up-to-date with respect to the input files. 之类的消息,否则我似乎无法说服它。进程运行Clean,然后Build,那么它怎么可能不构建项目呢?
【问题讨论】:
-
并行构建功能是常见问题。您将获得更多构建以与具有更多内核的机器并行运行。由于一个项目的构建速度过快,并且它依赖于另一个尚未完成的项目的构建输出,因此导致构建失败的可能性非零。换句话说,当项目依赖项从一开始就没有正确设置,但你以前从未注意到它时。
-
我们已经并行构建了 8 个月。这不是改变的东西。另外具体来说,我也尝试过在我的构建中不使用 /m,因此它正在串行编译,但仍然失败。
-
获得帮助的唯一可能方式是发布“自定义 msbuild 文件”以及从 msbuild 中获取的构建日志,并将输出详细程度设置为“诊断”。跨度>