2009-07-28 11 views
15

Sembra che ci siano (almeno) due opzioni per far sì che nant utilizzi i file csproj: utilizzando l'attività di NAntContrib o utilizzando msbuild.exe direttamente (ad es., codecampserver). Sto leggendo questo diritto, e in tal caso, qual è il vantaggio di utilizzare msbuild.exe sull'attività NAntContrib?<msbuild> task o msbuild.exe con NAnt?

risposta

23

Il NAntContrib presuppone .NET Framework V2.0. Se si desidera utilizzare .NET 3.5, è necessario chiamare direttamente MsBuild.exe. Quando si esegue l'aggiornamento a nuove versioni di .NET, è necessario modificare solo la proprietà MSBuildPath.

Ecco un esempio:

<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> 

Il valore MSBuildPath per le diverse versioni di .NET sono

  • 2,0, 3,0 C:\Windows\Microsoft.NET\Framework64\v2.0.50727\MSBuild.exe
  • 3,5 C:\Windows\Microsoft.NET\Framework64\v3.5\MSBuild.exe
  • 4, 4.5, 4.5.1 , 4.5.2 C:\Windows\Microsoft.NET\Framework64\v4.0.30319\MSBuild.exe

Per un 32 bit costruire, cambiare Framework64 al Framework

Aggiornamento Facendo seguito alcuni dei commenti, l'attributo value viene utilizzato per i parametri che non hanno spazi. line viene utilizzato per i parametri che devono essere delimitati a causa di spazi. In caso contrario, l'applicazione utilizzerà lo spazio come fine dell'input.

+0

Wow, grazie. Non avrei mai immaginato che NAntContrib fosse così indietro. – keithm

+7

-1 È possibile utilizzare con .NET 3.5. Assicurati di avere gli ultimi notturni di NAnt e NAntContrib (testato NAnt Nightly 20090130 e NAntContrib Nightly 20090201). –

+0

Sono nuovo di NAnt e sono un po 'confuso sul significato della riga arg arg arg valore quando si tratta di msbuild. Qualcuno può spiegarmi la differenza perché la documentazione non ha ancora chiarito le cose per me. – sheir

2

Ecco un semplice obiettivo

<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>