2009-07-28 5 views

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.

+0

Wow, danke. Ich hätte nie gedacht, dass NAntContrib so weit zurückliegt. – keithm

+7

-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). –

+0

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

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>