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