如何在nant脚本中指定MSBuild版本?

5

我有一个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版本,但事实并非如此。有任何想法吗?我知道我以前处理过这个问题,但是现在想不起来了。

4个回答

4

谢谢提供的答案,我知道skolima的方法是可行的,但最终解决方案非常简单,只需要增加此标签:

    <property name="nant.settings.currentframework" value="net-3.5"/> 

再次感谢你。

1

1

0

我之前回答过一个类似的问题:<msbuild> task or msbuild.exe with NAnt?

基本上,如果你设置一个指向MSBuild可执行文件的属性,你就可以避免升级到比NAnt默认支持的.NET版本更高时出现(长期)问题。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接