我有一个 nant 脚本,它在其中一个目标中使用 msbuild 标记来构建 Visual Studio 2010 解决方案。
问题是它到达这一点时失败,错误是:
Solution file error MSB5014: File format version is not recognized. MSBuild can only read solution files between versions 7.0 and 9.0, inclusive.
Failed to start MSBuild.
External Program Failed: C:\Windows\Microsoft.NET\Framework\v2.0.50727\msbuild.exe (return code was 1)
该错误是有道理的,如果它调用 .NET 2.0 版本的 MSBuild,它将无法编译 VS2010 解决方案。但是,我不知道如何让它调用正确版本的 MSBuild。
如果我运行'where MSBuild'(来自构建脚本失败的同一个 VS2010 命令提示符),我得到:
C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe
C:\Windows\Microsoft.NET\Framework\v3.5\MSBuild.exe
如果我运行“msbuild /version”(同样是同一窗口),我会得到:
Microsoft (R) Build Engine version 4.0.30319.17929
[Microsoft .NET Framework, version 4.0.30319.18034]
Copyright (C) Microsoft Corporation. All rights reserved.
4.0.30319.17929
所以一切看起来都应该使用 4.0 版本,但事实并非如此。知道什么给出了吗?我知道我之前已经解决过这个问题,但不记得是什么拯救了我的生命。