Question

On dirait qu'il ya (au moins) deux options pour obtenir Nant d'utiliser csproj fichiers: en utilisant la tâche de NAntContrib ou en utilisant msbuild.exe directement (par exemple, codecampserver ). Suis-je en train de lire ce droit, et si oui, quel est l'avantage d'utiliser msbuild.exe sur la tâche NAntContrib?

Était-ce utile?

La solution

Le NAntContrib assume .NET Framework V2.0. Si vous voulez utiliser .NET 3.5, vous devez appeler directement MSBuild.exe. Comme vous mettez à niveau vers les nouvelles versions de .NET, vous devez modifier uniquement la propriété MSBuildPath.

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 les 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 version 32 bits, le changement Framework64 à Framework

Mise à jour Faisant suite à certains commentaires, l'attribut value est utilisé pour les paramètres qui ne disposent pas d'espaces. line est utilisé pour les paramètres qui doivent être délimités en raison des espaces. Dans le cas contraire, l'application utiliserait l'espace comme une fin de l'entrée.

Autres conseils

Voici une simple cible

    <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>
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top