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

如何在nant脚本中指定MSBuild版本?,msbuild,nant,msbuild-4.0,Msbuild,Nant,Msbuild 4.0,我有一个nant脚本,它的一个目标使用msbuild标记来构建VisualStudio2010解决方案 问题是,当它到达这一点时失败,错误是: 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. Exte

我有一个nant脚本,它的一个目标使用msbuild标记来构建VisualStudio2010解决方案

问题是,当它到达这一点时失败,错误是:

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命令提示符运行),我会得到:

如果我运行“msbuild/version”(同样是同一窗口),我会得到:


所以看起来它应该使用4.0版本,但事实并非如此。知道是什么吗?我知道我以前解决过这个问题,但不记得是什么拯救了我的生命。

旧版本的NAnt/NAntContrib默认为v2.0


听起来像:

我通常使用的是使用
-t:net-4.0
开关(或任何其他框架版本)执行
NAnt
,在我的脚本中,我必须实际调用msbuild。是的,这不使用内置任务,但更具弹性。

我很欣赏答案,而且我知道skolima的方法会奏效,解决方案非常简单,只需添加以下标签:

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


再次感谢。

我回答了一个类似的问题:不久前

本质上,如果设置一个指向MSBuild可执行文件的属性,则在升级到比NAnt支持的现成版本更新的.NET版本时,可以避免(长期)问题

 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
    <property name="nant.settings.currentframework" value="net-3.5"/>