2009-08-01 133 views

回答

13

如果您想使用nant構建面向.NET 4.0的項目,則必須修改NAnt.exe.config並添加net-4.0目標框架並將<supportedRuntime ... />行添加到<startup>部分。

2

這是非常類似的這些問題/問題:

<msbuild> task or msbuild.exe with NAnt?

另一種選擇是直接調用的MSBuild從塊。

<property name="MSBuildPath" value="C:\WINDOWS\Microsoft.NET\Framework\v4.0\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> 
23

2010年4月15日... 在.net 4和vs2010發佈之後,更新了Eugene的正確答案。

我下載了vs2010和.net 4運行時。 量產版似乎是v4.30319即(C:\ WINDOWS \ Microsoft.NET \框架\ v4.0.30319)

審查http://paigecsharp.blogspot.com/2009/08/nant-net-framework-40-configuration.html後,... 我的文字粘貼,並從V4改變所有文字.0.20506到v4.30319和 將文本添加到NAnt.exe.config。

然後我更新了我的惡性腳本

<property name="nant.settings.currentframework" value="net-4.0" />, 

這使我的項目楠腳本使用.NET 4編譯

這讓我南特建立在.NET 4中的二進制....

更新2010-06-14:上面的答案是nant-0.85,我升級到nant-0.90,並且不得不將vendor="Microsoft"添加到添加到nants config的框架屬性中。此外,它看起來像nant0.9發現.NET庫的方式不同,因爲我不得不這樣的事情添加到我的惡性的build.xml ...

<property name="framework-get-assembly-directory" value="${framework::get-assembly-directory('net-4.0')}" /> 
<property name="dotNetReferenceAssemblyPath" value="${framework-get-assembly-directory}\" /> 

<include name="${dotNetReferenceAssemblyPath}System.ComponentModel.DataAnnotations.dll" /> 
+0

將NAnt的版本更新到最新的可用版本(當前爲0.91 Alpha 2)對我來說是必要的(除了構建和配置更改外)。順便說一句,並不需要最後的。 – Catch22 2011-01-06 12:17:23

0

只是把該信息存在,所以我可以再次找到它,打造C++項目,而無需修改PATH environement變量和創建LIB/LIBPATH /包含變量或vsvars32運行惡性,需要在南特的配置文件類似的東西:

<project> 
    <readregistry 
     property="WindowsSdkDir" 
     key="SOFTWARE\Microsoft\Microsoft SDKs\Windows\v7.0A\InstallationFolder" 
     hive="LocalMachine" 
     failonerror="true" /> 

    <readregistry 
     property="installRoot" 
     key="SOFTWARE\Microsoft\.NETFramework\InstallRoot" 
     hive="LocalMachine" /> 
    <readregistry 
     property="sdkInstallRoot" 
     key="SOFTWARE\Microsoft\Microsoft SDKs\Windows\v7.0A\WinSDK-NetFx40Tools\InstallationFolder" 
     hive="LocalMachine" 
     failonerror="false" /> 
    <readregistry 
     property="vs10Win32Tools" 
     key="SOFTWARE\Microsoft\Microsoft SDKs\Windows\v7.0A\WinSDK-Win32Tools\InstallationFolder" 
     hive="LocalMachine" 
     failonerror="false" />  
    <readregistry 
     property="vcInstallDir" 
     key="SOFTWARE\Microsoft\VisualStudio\10.0\Setup\VC\ProductDir" 
     hive="LocalMachine" 
     failonerror="true" /> 
    <readregistry 
     property="vs10dbghelp" 
     key="SOFTWARE\Microsoft\VisualStudio\10.0\Setup\Dbghelp_path" 
     hive="LocalMachine" 
     failonerror="true" /> 

    <setenv name="PATH" value="${path::combine(vcInstallDir, 'bin')};${vs10dbghelp};${sdkInstallRoot};${vs10Win32Tools};${environment::get-variable('PATH')};" /> 
    <setenv name="INCLUDE" value="${path::combine(WindowsSdkDir, 'include')};${path::combine(vcInstallDir, 'atlmfc/include')};${path::combine(vcInstallDir, 'include')};${environment::get-variable('INCLUDE')}" /> 
    <setenv name="LIB" value="${path::combine(WindowsSdkDir, 'lib')};${path::combine(vcInstallDir, 'atlmfc/lib')};${path::combine(vcInstallDir, 'lib')};${environment::get-variable('LIB')}" /> 
    <setenv name="LIBPATH" value="${path::combine(installRoot, 'v4.0.30319')};${path::combine(installRoot, 'v3.5')};${path::combine(WindowsSdkDir, 'lib')};${path::combine(vcInstallDir, 'atlmfc/lib')};${path::combine(vcInstallDir, 'lib')};${environment::get-variable('LIBPATH')}" /> 
</project> 

註冊表路徑是VS2010中的一個,因爲相應的SDK需要時間...

1

我使用了上述所有答案,並且仍遇到一些奇怪的構建錯誤:「錯誤MSB6006:」AL.exe「已退出與代碼128「。錯誤沒有任何幫助。我做了一些谷歌搜索,並提出了幾個答案。這裏是鏈接:msdn helpasp.net forums

我與這個錯誤搏鬥了整整一天,研究「詳細」和「診斷」日誌,但它所做的是指向我失敗的建設大會。沒有具體的錯誤。我甚至無法在本地盒子上覆制它。最後,我決定嘗試在第二個鏈接(asp.net forums)中嘗試關於資源文件命名約定的建議,並且...!我的構建開始工作。我不知道由於資源名稱造成的構建失敗,但仍在處理這個問題,但我的直接目標是讓構建工作。

希望這可以幫助別人。

1

NAnt 0.86和更高版本用完了。至於寫這個,我使用0.91。

從網上下載時,在開箱之前請記住「unblock」zip文件(復位安全區域)。

0

我有類似的問題4.5,這解決了我的問題:

http://www.donnfelker.com/nant-sdkinstallroot-has-not-been-set/

我有一個64位的機器,但.NET安裝爲32位。 sdkInstallRoot無法找到正確的路徑。我檢查了我的註冊表編輯器以找到正確的路徑並替換了nant.exe.config中的條目。

我代替:

<locatesdk property="sdkInstallRoot" minwinsdkver="v7.0A" minnetfxver="4.0" maxnetfxver="4.0.99999" failonerror="false" /> 

與此:

<readregistry 
          property="sdkInstallRoot" 
          key="SOFTWARE\Wow6432Node\Microsoft\Microsoft SDKs\Windows\v8.0A\WinSDK-NetFx40Tools\InstallationFolder" 
          hive="LocalMachine" 
          failonerror="false" />