我正在重构我现有的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的
答案 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>