2009-02-18 20 views
10

Tôi hiện đang viết một kịch bản triển khai trong MSBUILD, và sau khi tải nhiều phần mở rộng, tôi đã tìm thấy bản thân mình nhìn vào xây dựng tập tin và suy nghĩ:Điểm của MSBUILD/NANT là gì nếu bạn chỉ viết mã thủ tục? Powershell có tốt hơn không?

điểm trong việc này trong MSBUILD là gì?

Kịch bản triển khai này hoàn toàn thủ tục: dừng trang web, xóa thư mục, sao chép tệp, thay đổi quyền, bắt đầu trang web, v.v. Không có nội dung phụ thuộc ưa thích mà tôi cho là miền tự nhiên của các công cụ như MSBUILD, NANT và CHẾ TẠO.

Lý do duy nhất tôi có thể thấy để sử dụng MSBUILD là nó trở thành tiêu chuẩn và dễ dàng đặt các phần mở rộng vào SVN của bạn để các bản dựng 'hoạt động'.

Vấn đề với nó là tôi phải dành tất cả thời gian làm việc để làm 'công cụ cơ bản' trong MSBUILD (định vị các phần mở rộng, làm việc ra cú pháp) mà sẽ tầm thường (mặc dù tiết hơn) trong Powershell hoặc thậm chí dòng lệnh .

Vì vậy, để tổng hợp: Nhiệm vụ thủ tục có phù hợp với MSBUILD hoặc bạn có sử dụng một cái gì đó như Powershell hơn không?

Trả lời

8

MSBuild không phải là một ngôn ngữ kịch bản và không nên được sử dụng như vậy. Hầu như không may là MSBuild có khả năng mở rộng phong phú và đủ linh hoạt để sử dụng cho mọi thứ. Sử dụng các công cụ phù hợp nhất với nhiệm vụ, nếu bạn thấy mình dành quá nhiều thời gian để tạo ra chức năng quá hạn chế và chất lượng quá thấp so với những gì bạn có thể tạo bằng công nghệ khác, bạn nên chuyển đổi.

+0

đánh dấu này là câu trả lời như nó cùng một kết luận tôi đã đến: sử dụng MSBUILD để xây dựng sln/proj, nhưng không rơi vào cái bẫy của việc sử dụng MSBUILD mở rộng cho tất cả mọi thứ ... chủ yếu là vô nghĩa – Schneider

3

Điều đó thực sự tùy thuộc vào hoàn cảnh của bạn. Nếu nó đã được lên đến tôi, mặc dù, và bạn đã sử dụng Visual Studio - Tôi sẽ nói có, ở lại với MSBuild vì lợi ích của hội nhập.

Mặt khác, tôi sẽ chọn MSBUILD, vì các nhiệm vụ rất thủ tục, nó cho phép bạn linh hoạt mở rộng quy trình xây dựng này sau để xử lý các tác vụ phức tạp hơn.

+1

Sẽ không sử dụng một cái gì đó như Powershell cho tôi linh hoạt hơn để mở rộng quy trình? – Schneider

1

msbuild đi kèm với .NET. Bạn phải thêm PowerShell vào máy chủ/người dùng phải thêm nó - ít nhất là thông qua Windows XP, máy chủ 2003. Điều đó có thể hoặc không có thể là một vấn đề trong môi trường của bạn.

Tôi không nghĩ rằng các tác vụ thủ tục phù hợp để viết trong MSBUILD, đơn giản vì ngắn hơn msbuild, càng tốt càng xa càng tốt. Tôi có thể sử dụng msbuild để gọi cho họ, nhưng có lẽ sẽ viết một thư viện mở rộng để thực hiện chúng.

0

Tôi nghĩ rằng nó phụ thuộc vào cách thức quy trình phát hành và triển khai của bạn chảy, như để làm cho nó có ý nghĩa khi sử dụng phần mở rộng MSBuild hoặc thực thi trình bao. MSBuild cho phép flexiablity xử lý tất cả các bước quy trình của bạn trong một luồng chứa tự thực hiện.

Nếu bạn cần nó xảy ra cùng một lúc thì MSBuild cho phép bạn kiểm soát 'Sự kiện' hoặc các mục tiêu có thể được ghi đè để đáp ứng yêu cầu của bạn.

Nếu yêu cầu triển khai các tạo tác của bạn sau khi biên dịch mã của bạn thì MSBuild rất phù hợp để làm điều này vì bạn có thể sử dụng mục tiêu 'Sau khi xây dựng' được kích hoạt trong khi thực hiện chuẩn MSBuild. Nó có thể làm cho quá trình của bạn tự chứa.

Powershell không thể tạo mã của bạn. Nó sẽ phải gọi MSBuild từ bên trong kịch bản của bạn. Đối với tôi, việc xây dựng và triển khai của bạn là khép kín và do đó sẽ được tổ chức tốt hơn.

MSBuild là nền tảng và công cụ xây dựng cốt lõi của Microsoft.

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