Frage

Es sieht aus wie es (mindestens) zwei Optionen für Nant zu verwenden csproj Dateien bekommen: mit der Aufgabe, NAntContrib oder mit msbuild.exe direkt (zB codecampserver ). Bin ich das richtig zu lesen, und wenn ja, was ist der Vorteil von msbuild.exe über die NAntContrib Aufgabe mit?

War es hilfreich?

Lösung

Die NAntContrib geht davon aus .NET Framework V2.0. Wenn Sie .NET 3.5 verwenden möchten, müssen Sie MSBuild.exe direkt anrufen. Wie Sie auf neue Versionen von .NET aktualisieren, müssen Sie nur die MSBuildPath Eigenschaft ändern.

Hier ist ein Beispiel:

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

Der Wert MSBuildPath für verschiedene Versionen von .NET sind

  • 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

Für ein 32-Bit-Build, ändert Framework64 zu Framework

Aktualisieren Im Anschluss an einige der Kommentare wird das value Attribut für Parameter verwendet, der keine Leerzeichen haben. line wird für die Parameter verwendet, die durch Leerzeichen getrennt werden müssen. Andernfalls würde die Anwendung den Raum als Ende der Eingabe verwendet werden.

Andere Tipps

Hier ist ein einfaches Ziel

    <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>
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top