2009-08-01 39 views

Trả lời

13

Nếu bạn muốn sử dụng nant để xây dựng các dự án nhắm mục tiêu .NET 4.0, bạn sẽ phải sửa đổi NAnt.exe.config và thêm khung mục tiêu net-4.0 và thêm dòng <supportedRuntime ... /> vào phần <startup>.

2

này là khá giống với những câu hỏi/vấn đề:

<msbuild> task or msbuild.exe with NAnt?

Một lựa chọn khác sẽ được trực tiếp gọi MSBuild từ một khối.

<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 ngày 15 tháng 4, ... Cập nhật câu trả lời đúng ở trên từ Eugene, sau khi .net 4 và vs2010 được phát hành.

Tôi đã tải xuống vs2010 và thời gian chạy .net 4. Phiên bản sản xuất có vẻ là v4.30319 tức là (C: \ WINDOWS \ Microsoft.NET \ Framework \ v4.0.30319)

Sau khi xem xét http://paigecsharp.blogspot.com/2009/08/nant-net-framework-40-configuration.html ... tôi dán vào văn bản và thay đổi toàn bộ văn bản từ v4 .0.20506 đến v4.30319 an đã thêm văn bản vào NAnt.exe.config.

sau đó tôi cập nhật kịch bản Nant tôi để

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

này để kịch bản Nant dự án của tôi sử dụng .net 4 biên dịch

Và điều này đã cho tôi một Nant xây dựng với .net 4 nhị phân ....

Cập nhật 2010-06-14: Câu trả lời ở trên đã được trả lời bằng nant-0.85, tôi đã nâng cấp lên nant-0.90 và phải thêm vendor="Microsoft" vào thuộc tính khung được thêm vào cấu hình nants. Ngoài ra, nó trông giống như nant0.9 tìm thấy các thư viện .net khác nhau, như tôi đã có thêm một cái gì đó như thế này để build.xml Nant tôi ...

<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

Cập nhật phiên bản của NAnt lên phiên bản mới nhất hiện có (hiện tại là 0,91 Alpha 2) là cần thiết để tôi làm việc này (ngoài các thay đổi về cấu hình và bản dựng). btw, không cần số cuối cùng. – Catch22

0

Chỉ cần đặt các thông tin đó vì vậy tôi có thể tìm thấy nó một lần nữa, để xây dựng C++ dự án mà không sửa đổi biến PATH environement và tạo LIB/LIBPATH/BAO GỒM nHỮNG sỰ biến hoặc chạy Nant từ vsvars32, một cái gì đó như thế là cần thiết trong file config Nant:

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

Đường dẫn đăng ký là một trong VS2010 do SDK tương ứng đang dùng lúc này ...

1

Tôi đã sử dụng tất cả các câu trả lời ở trên và vẫn gặp lỗi xây dựng lạ: "lỗi MSB6006:" AL.exe "đã thoát với mã 128 ". Lỗi không hữu ích chút nào. Tôi đã làm một số googling và đưa ra vài câu trả lời. Dưới đây là các liên kết: msdn helpasp.net forums

Tôi đã vật lộn với lỗi đó cả ngày, nghiên cứu nhật ký "chi tiết" và "chẩn đoán", nhưng tất cả những gì nó làm là chỉ cho tôi đến hội đồng không thành công. Không có lỗi cụ thể. Tôi thậm chí không thể sao chép nó trên hộp địa phương của tôi.Cuối cùng, tôi quyết định thử đề xuất về quy ước đặt tên tệp tài nguyên trong liên kết thứ hai (asp.net forums) và ... alleluia! xây dựng của tôi bắt đầu hoạt động. Tôi không biết điều gì đang xảy ra với việc xây dựng thất bại vì tên tài nguyên, vẫn làm việc trên đó, nhưng mục tiêu trước mắt của tôi là xây dựng công việc.

Hy vọng điều này sẽ giúp người khác ở ngoài đó.

1

NAnt 0.86 và sau đó sẽ hết hộp. Khi viết bài này, tôi đang sử dụng 0,91.

Khi tải xuống từ mạng, hãy nhớ "unblock" tệp zip (đặt lại vùng bảo mật) trước khi giải nén.

0

Tôi có vấn đề tương tự cho 4,5, điều này giải quyết vấn đề của tôi:

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

Tôi có một máy 64 bit nhưng .net được cài đặt như 32 bit. SdkInstallRoot không thể tìm thấy đường dẫn chính xác. Tôi đã kiểm tra trong trình soạn thảo đăng ký của mình để tìm đường dẫn chính xác và thay thế mục nhập trong nant.exe.config.

tôi thay thế:

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

với điều này:

<readregistry 
          property="sdkInstallRoot" 
          key="SOFTWARE\Wow6432Node\Microsoft\Microsoft SDKs\Windows\v8.0A\WinSDK-NetFx40Tools\InstallationFolder" 
          hive="LocalMachine" 
          failonerror="false" /> 
Các vấn đề liên quan