2012-02-17 46 views
8

Tôi đang tìm cách biên dịch dự án Delphi 2010 bằng MSBuild, nhưng có gì đó không đúng, tôi không thể tạo MSBuild để biên dịch dự án của mình.Tự động xây dựng dự án Delphi 2010 với MSBuild

tôi đã cố gắng dòng lệnh này:

"C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ msbuild.exe" "C: \ MyProject \ Myapp.dproj"/t: Phát hành

và điều này:

"C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ msbuild.exe" "C: \ MyProject \ Myapp.dproj"/p: Cấu hình = Bản phát hành/t: Phát hành

Nhưng MSBuild sẽ không nhận ra cấu hình xây dựng của tôi!

Tôi cũng đã thay đổi [rsvars.bat] nhưng nó không hoạt động!

@SET BDS=C:\Program Files (x86)\Embarcadero\RAD Studio\7.0 
@SET BDSCOMMONDIR=C:\Users\Public\Documents\RAD Studio\7.0 
@SET FrameworkDir=C:\Windows\Microsoft.NET\Framework\v4.0.30319 
@SET FrameworkVersion=v4.0.30319 
@SET FrameworkSDKDir= 
@SET PATH=%FrameworkDir%;%FrameworkSDKDir%;%PATH% 
@SET LANGDIR=EN 

Các lỗi MSBuild là:

C:\MyProject\Myapp.dproj : error MSB4057: The target "Release" does 
not exist in the project. 

Bất kỳ sự giúp đỡ để có được tôi xây dựng ứng dụng của tôi với MSBuild sẽ được đánh giá rất nhiều.

(Vâng, tôi nhận thức đầy đủ các công cụ như FinalBuilder, tôi chỉ muốn tìm hiểu làm thế nào để làm điều này với MSBuild)

Cảm ơn!

+0

Thank bạn, OK (1) Tôi đã thay đổi rsvars.bat trở lại (nhưng vẫn không thể biên dịch:(), (2) DOS không nhận ra msbuild mà không có đường dẫn đầy đủ – TheDude

+3

Nếu bạn chạy tệp rsvars.bat trước khi chạy msbuild các cửa sổ giao diện điều khiển (không giống như DOS, như là một lưu ý phụ) sẽ nhận ra một pla trong cuộc gọi đến 'msbuild.exe' như rsvars.bat sửa đổi biến PATH (xem dòng 6). Bạn cũng có thể chỉnh sửa vĩnh viễn các biến môi trường - theo cách đó bạn không phải chạy rsvars.bat mỗi lần. – Chris

+0

2. Nó chắc chắn không nhận ra msbuild, nếu bạn chạy rsvars.bat trước khi gọi msbuild. Đọc tài liệu. Họ giải thích tất cả điều này. –

Trả lời

12

Bạn cần chuyển đổi các tham số. Tham số đích (/ t) cho MSBuild biết mục tiêu cần tạo. Điều này có thể là 'Thực hiện', 'Làm sạch' hoặc 'Xây dựng' (hoặc kết hợp những thứ đó - tách riêng chúng bằng ';' trong trường hợp này).

Tham số thuộc tính (/ p) chuyển tiếp các thuộc tính tới trình biên dịch thực tế. Bạn có thể chỉ định ví dụ như cấu hình sử dụng /p:config=

Vì vậy, nếu bạn muốn để làm sạch và sau đó xây dựng một dự án sử dụng cấu hình phát hành, xác định các tham số được như thế này:

msbuild.exe "/t:Clean;Build" "/p:config=Release" Myapp.dproj 
+0

Cảm ơn bạn, Chris nhưng bây giờ tôi nhận được điều này: – TheDude

+0

Microsoft (R) Phiên bản Công cụ Xây dựng 4.0.30319.1 [Microsoft .NET Framework, Phiên bản 4.0.30319.1] Xây dựng bắt đầu 2/17/2012 20:37:11 PM. Dự án "D: \ _ Software \ test.dproj" trên nút 1 (Làm sạch; Xây dựng (các) mục tiêu) . D: \ _ Software \ test.dproj: lỗi MSB4057: Mục tiêu "Clean" không tồn tại t trong dự án. Hoàn thành dự án xây dựng "D: \ _ Software \ test.dproj" (Làm sạch; Xây dựng mục tiêu (s)) - FAILED. Xây dựng FAILED. "D: \ _ Software \ test.dproj" (Làm sạch; Mục tiêu xây dựng) (1) -> D: \ _ Software \ test.dproj: lỗi MSB4057: Mục tiêu "Sạch" hiện không tồn tại trong dự án. 0 Cảnh báo (s) 1 (Các) lỗi – TheDude

+1

Bạn có chạy rsvars trước khi phát lệnh msbuild không? –

0

Thay đổi /p:Configuration=Release-/p:config=Release

Các vấn đề liên quan