tâche ou msbuild.exe avec NAnt?
il semble qu'il y ait (au moins) deux options pour obtenir nant d'utiliser des fichiers csproj: en utilisant la tâche de NAntContrib ou en utilisant msbuild.exe directement (par exemple, codecampserver ). Est-ce que je lis bien, et si oui, quel est l'avantage d'utiliser msbuild?exe sur la tâche NAntContrib?
2 réponses
the NAntContrib assume .net Framework V2.0. Si vous voulez utiliser .NET 3.5, vous devez appeler MsBuild.exe directement. Lorsque vous mettez à niveau vers les nouvelles versions de .NET, vous n'avez qu'à modifier la propriété MSBuild Path.
voici un exemple:
<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>
la valeur MSBuildPath
pour différentes versions de .NET sont
- 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.x, 4.6.x, 4.7.x
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\MSBuild.exe
pour une construction à 32 bits, remplacer Framework64
par Framework
mise à Jour
Suite à certains commentaires, le value
attribut est utilisé pour les paramètres qui n'ont pas d'espaces. line
est utilisé pour les paramètres qui doivent être délimités en raison des espaces. Sinon, l'application utilise l'espace comme une fin de l'entrée.
Voici une cible simple
<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>