Es sieht so aus, als gäbe es (mindestens) zwei Optionen, um csproj-Dateien zu verwenden: Verwenden Sie die Aufgabe NAntContrib oder verwenden Sie direkt msbuild.exe (z. B. codecampserver). Lese ich dieses Recht, und wenn ja, was ist der Vorteil der Verwendung von msbuild.exe über die NAntContrib Aufgabe?<msbuild> Task oder Msbuild.exe mit NAnt?
15
A
Antwort
23
Der NAntContrib setzt .NET Framework V2.0 voraus. Wenn Sie .NET 3.5 verwenden möchten, müssen Sie MsBuild.exe direkt aufrufen. Wenn 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, 4.5.1 , 4.5.2
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\MSBuild.exe
Für einen 32-Bit-Build ändern Framework64
zu Framework
aktualisieren auf einige der Kommentare Anknüpfend das value
Attribut wird für Parameter verwendet, der keine Leerzeichen haben. line
wird für Parameter verwendet, die aufgrund von Leerzeichen getrennt werden müssen. Andernfalls würde die Anwendung den Speicherplatz als ein Ende der Eingabe verwenden.
2
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>
Wow, danke. Ich hätte nie gedacht, dass NAntContrib so weit zurückliegt. – keithm
-1 Sie können mit .NET 3.5 verwenden. Stellen Sie sicher, dass Sie die neuesten Nightlies von NAnt und NAntContrib haben (Getestete NAnt Nightly 20090130 und NAntContrib Nightly 20090201). –
Ich bin neu bei NAnt und bin ein wenig verwirrt über die Bedeutung der arg Zeile arg Wert im Umgang mit Msbuild. Kann mir jemand den Unterschied erklären, da die Dokumentation die Dinge für mich noch nicht geklärt hat. – sheir