我正在尝试使用nant 0.90和visual studio 2008,.net 3.5项目。 nant脚本由团队城市调用。这里没什么太复杂的。
<?xml version="1.0"?>
<project name="IPSA System" default="build" basedir=".">
<property name="nant.settings.currentframework" value="net-3.5"/>
<msbuild project="FS.IPSA.WebAdmin\FS.IPSA.WebAdmin.csproj">
<arg value="/property:TeamOutPath=Release\FS.IPSA.WebAdmin" />
<property name="TeamOutPath" value="Release\FS.IPSA.WebAdmin" />
</msbuild>
</project>
我遇到的问题是,nant坚持要求调用.net 2.0编译器而不是3.5。我认为将nant.settings.currentframework
值放入脚本应该强制框架版本。似乎并非如此。还有什么可能导致这个问题?
答案 0 :(得分:1)
也许msbuild任务无法构建vs.net 2008解决方案(例如调用错误版本的msbuild.exe)。
使用这样的东西怎么样:
<!-- msbuild from .net 2.0 is unable to build vs.net 2008 solutions. Let's try to find .net 3.5 version of msbuild -->
<property name ="msbuild.exe" value="msbuild"/> <!-- default-->
<property name="windows.dir" value="${environment::get-variable('windir')}"/>
<property name="net3.5.dir" value="${windows.dir}/Microsoft.NET/Framework/v3.5"/>
<if test="${directory::exists(net3.5.dir)}">
<property name="msbuild.exe" value="${net3.5.dir}/msbuild.exe"/>
</if>
<!-- current nant msbuild task is unable to build VS.NET 2008 solutions -->
<!-- let's try run correct msbuild.exe via the exec task -->
<exec program ="${msbuild.exe}" verbose="true">
<arg value="/property:TeamOutPath=Release\FS.IPSA.WebAdmin" />
<arg value="FS.IPSA.WebAdmin\FS.IPSA.WebAdmin.csproj"/>
</exec>
答案 1 :(得分:0)
最后,事实证明nant没有出现问题,它正在调用正确版本的msbuild,但是msbuild正在调用错误版本的csc.exe。我没有追踪它为什么这样做,但它看起来像是msbuild,而不是nant。