当从CCNET 1.6调用NAnt 0.91时,构建异常“此项目中不存在”目标''

时间:2011-09-15 21:19:46

标签: continuous-integration cruisecontrol.net nant

我正在重构我现有的NAnt构建脚本,以便能够在任何项目中使用它们并从CruiseControl .NET发送适当的值。但是,我遇到了一个问题,目标没有正确设置。

我已将我对NAnt的调用定义如下:

  <tasks>
    <nant>
      <executable>$(NAntExecutablePath)</executable>
      <buildFile>D:\ci\default.build.xml</buildFile>
      <!--baseDirectory></baseDirectory-->
      <buildArgs>
        -D:SolutionFile="$(Batch_WorkingFolderTrunk)\MySolution.sln"
        -D:LocalDeployRoot=D:\ci\deploy\MyProject
      </buildArgs>
      <targetList>
        <target>build</target>
      </targetList>
    </nant>
  </tasks>

我的构建文件具有所需的必需任务

  <target name="clean">
    <exec program="${MSBuildPath}">
      <arg line='"${SolutionFile}"' />
      <arg line="/property:Configuration=${SolutionConfiguration}" />
      <arg value="/target:Clean" />
      <arg value="/verbosity:normal" />
      <arg value="/nologo" />
      <arg line='/logger:"${CcnetMsbuildLoggerPath}"' if="${file::exists('${CcnetMsbuildLoggerPath}')}"/>
    </exec>

    <delete>
      <fileset basedir=".">
        <include name="bin\**\*" />
        <include name="TestResults\**\*" />
      </fileset>
    </delete>
  </target>

      <target name="build" depends="clean">

        <delete>
          <fileset basedir="${LocalDeployRoot}">
            <include name="**\*"/>
          </fileset>
        </delete>

        <exec program="${MSBuildPath}">
          <arg line='"${SolutionFile}"' />
          <!--arg line='/property:Configuration="${SolutionConfiguration}"' /-->
          <arg line='/property:OutputPath="${LocalDeployRoot}"' />
          <!--arg line='/property:Platform="${SolutionPlatform}"' /-->
          <arg value="/target:Rebuild" />
          <arg value="/verbosity:normal" />
          <arg value="/nologo" />
          <arg line='/logger:"${CcnetMsbuildLoggerPath}"' if="${file::exists('${CcnetMsbuildLoggerPath}')}"/>
        </exec>
      </target>

我的错误消息说明

  

目标框架:指定的Microsoft .NET Framework 4.0目标:
  建立

 [echo] Starting the build script
     

建立失败

     

目标''在此项目中不存在。

     

总时间:0.1秒。

有任何想法吗?

我可以通过命令行成功运行NAnt脚本:

  

D:\ ci&gt; nant-0.91 \ bin \ nant.exe /f:default.build.xml build -D:SolutionFile =“D:\ ci \ code \ MyProject \ MySolution.sln”-D:LocalDeployRoot = d:\ CI \部署\ MyProject的

1 个答案:

答案 0 :(得分:2)

这似乎是在v1.4.4.83之后的某个时间引入的错误。解决方案是将节点更改为单行。在我的1.4.4.83版配置中,我在单独的行上有buildArgs选项,以提高可读性。

我的解决方案是改变

<buildArgs>
  -D:SolutionFile="$(Batch_WorkingFolderTrunk)\MySolution.sln"
  -D:LocalDeployRoot=D:\ci\deploy\MyProject
</buildArgs>

<buildArgs>-D:SolutionFile="$(Batch_WorkingFolderTrunk)\MySolution.sln" -D:LocalDeployRoot=D:\ci\deploy\MyProject</buildArgs>