看起来(至少)有两个选项可以让nant使用csproj文件:使用NAntContrib的任务或直接使用msbuild.exe (例如,codecampserver)。我的理解是正确的吗?如果是这样的话,使用msbuild.exe比使用NAntContrib任务有什么优势?
发布于 2009-07-29 18:23:22
NAntContrib采用.NET FrameworkV2.0。如果你想使用.NET 3.5,你需要直接调用MsBuild.exe。在升级到新版本的.NET时,只需修改MSBuildPath属性。
下面是一个例子:
<property name="MSBuildPath" value="C:\WINDOWS\Microsoft.NET\Framework\v3.5\MSBuild.exe"/>
<target name="build">
<exec program="${MSBuildPath}">
<arg line='"${SolutionFile}"' />
<arg line="/property:Configuration=${SolutionConfiguration}" />
<arg value="/target:Rebuild" />
<arg value="/verbosity:normal" />
<arg value="/nologo" />
<arg line='/logger:"C:\Program Files\CruiseControl.NET\server\ThoughtWorks.CruiseControl.MsBuild.dll"'/>
</exec>
</target>不同版本的.NET的MSBuildPath值为
C:\Windows\Microsoft.NET\Framework64\v2.0.50727\MSBuild.exeC:\Windows\Microsoft.NET\Framework64\v3.5\MSBuild.exeC:\Windows\Microsoft.NET\Framework64\v4.0.30319\MSBuild.exe对于32位版本,请将Framework64更改为Framework
更新跟进一些注释,value属性用于没有空格字符的参数,而as line用于包含空格的参数。否则,NAnt将使用空格作为输入的结尾。
发布于 2012-07-12 22:12:16
下面是一个简单的目标
<target>
<loadtasks assembly="${nant::get-base-directory()}/../../nantcontrib-0.85/bin/NAnt.Contrib.Tasks.dll" />
<msbuild project="${filepath.root}/yourproject.csproj" verbose="true">
<arg value="/p:Platform=${build.platform}" />
<arg value="/t:Rebuild" />
<arg value="/p:OutputPath=${build.dir}/bin/" />
</msbuild>
</target>https://stackoverflow.com/questions/1195389
复制相似问题