16

nant に csproj ファイルを使用させるには、(少なくとも) 2 つのオプションがあるようです: NAntContrib のタスクを使用する、msbuild.exe を直接使用します (例: codecampserver )。私はこれを正しく読んでいますか?もしそうなら、NAntContrib タスクよりも msbuild.exe を使用する利点は何ですか?

4

2 に答える 2

27

NAntContrib は、.NET Framework V2.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>

MSBuildPath異なるバージョンの .NETの値は次のとおりです。

  • 2.0、3.0C:\Windows\Microsoft.NET\Framework64\v2.0.50727\MSBuild.exe
  • 3.5C:\Windows\Microsoft.NET\Framework64\v3.5\MSBuild.exe
  • 4、4.5.x、4.6.x、4.7.xC:\Windows\Microsoft.NET\Framework64\v4.0.30319\MSBuild.exe

32 ビット ビルドの場合は、次のように変更Framework64します。Framework

更新 一部のコメントをフォローアップすると、value属性は空白文字を含まないlineパラメーターに使用され、空白を含むパラメーターには as が使用されます。それ以外の場合、NAnt はスペースを入力の終わりとして使用します。

于 2009-07-29T18:23:21.847 に答える
2

簡単な目安はこちら

    <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>
于 2012-07-12T14:12:15.633 に答える