Nant拒绝使用.Net 3.5

时间:2010-08-17 16:28:58

标签: visual-studio-2008 .net-3.5 continuous-integration nant

我正在尝试使用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值放入脚本应该强制框架版本。似乎并非如此。还有什么可能导致这个问题?

2 个答案:

答案 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。