2009-03-28 12 views
8

Tôi đã xem câu hỏi và câu trả lời prior. Trong một câu hỏi đó, người đăng ban đầu đã hỏi một câu hỏi tiếp theo:Tại sao tôi muốn tiếp tục sử dụng Nant khi MSBuild có sẵn?

lý do thuyết phục để sử dụng msbuild là gì? có khuyết điểm?

Tôi không thấy câu trả lời cho điều đó. Tôi cũng muốn biết chuyện trò chuyện. Các tính năng hấp dẫn của Nant là gì?

Tôi nghĩ, đối với nant, nền tảng chéo lớn. Đối với msbuild, nó là tiền tệ và tích hợp với Visual Studio. Điều này có đúng không? Còn gì nữa không?

EDIT/Đã thêm: bất kỳ ai có so sánh danh sách tính năng? Có người nói "nant có nhiều tính năng hơn trong hộp." Cái nào?

Sẽ hợp lý khi kết hợp các dự án này, kết hợp các nỗ lực để cùng có lợi? Có ai hỏi MS nếu họ muốn đóng góp msbuild cho cộng đồng, chẳng hạn như WiX? Cơ hội là gì?

EDIT2: Tôi vừa tìm thấy this prior discussion, không chắc tại sao tôi không thể tìm thấy trước đây.

+0

Tái nền tảng - lưu ý rằng mono cũng sẽ đọc csproj (msbuild). –

+0

oooo, tuyệt. Công cụ xây dựng của Mono là ...? – Cheeso

+0

xin lỗi - tôi nên nói lại điều đó; * nant * sẽ vui vẻ làm việc với các tệp msbuild –

Trả lời

14

Nant có nhiều tính năng hơn ra khỏi hộp, nhưng MSBuild có tốt hơn nhiều nền tảng cấu trúc (metadata mục đá) mà làm cho nó dễ dàng hơn để xây dựng kịch bản MSBuild tái sử dụng.

MSBuild mất một thời gian để hiểu, nhưng một khi bạn làm nó rất tốt đẹp.

Tài liệu học tập:

+1

Tôi đã có trải nghiệm đối diện chính xác. Tôi thấy MSBuild script gây nhầm lẫn và kịch bản NAnt trực quan. Tôi muốn đề nghị mọi người so sánh các công cụ cho chính họ và rút ra kết luận của riêng họ. – TrueWill

2

Bạn sẽ tiếp tục sử dụng nant vì bạn đã sử dụng nó. Nếu bạn đang sử dụng msbuild, và muốn biết tại sao bạn chuyển sang nant, thì câu trả lời là không có lý do thực sự để chuyển đổi. Ít nhất bạn biết msbuild là không đi anywere, nant hasnt được cập nhật kể từ tháng mười hai 2007.

2

Xem xét rằng Nant dựa trên Ant cho Java, rằng có thể có lý do đủ để gắn bó với nó. Các công cụ xây dựng khác dựa trên Ant - Phing là một, cho PHP. Khi tôi bắt đầu sử dụng công cụ đó, tôi đã nhặt nó lên không lâu vì tôi đã quen thuộc với NAnt.

1

Chúng tôi sử dụng phương pháp kết hợp vì chúng tôi đã bắt đầu trên NANT trước khi MS-Build có sẵn. Tuy nhiên MS-Build cna làm các buids song song trên các dự án không phụ thuộc mà có thể trong các trường hợp thích hợp làm giảm đáng kể thời gian xây dựng của bạn. Để NANT tương tác với SVN, triển khai và chỉ có MS-build làm biên dịch đã giảm thời gian xây dựng của chúng ta khoảng 45% YMMV tùy thuộc vào cách bạn cấu trúc sln của bạn.

2

Tôi chỉ đơn giản thấy NAnt dễ sử dụng hơn. Tôi dám nói điều này một phần là do nền tảng của tôi trong Ant, nhưng tôi đã tìm thấy xây dựng một tệp NAnt cho Protocol Buffers là nhiều hơn công việc đơn giản hơn là xây dựng một tệp MSBuild cho MiscUtil.(Ngay cả bây giờ có những thứ trong MiscUtil xây dựng mà tôi muốn bao gồm nhưng không thể - nó có vẻ ridiculously cứng để đổ đầu ra của một nhiệm vụ vào một tập tin văn bản, IIRC.) Các khái niệm đơn giản, và có vẻ như Tôi đang sử dụng một thiết lập mà trước đây tôi nghĩ là thực sự ngớ ngẩn - tôi sử dụng NAnt cho tệp xây dựng "chính" của mình, nhưng gọi MSBuild để làm thực tế " biên dịch dự án .NET của tôi "bước. Ý tưởng về việc có hai hệ thống xây dựng cho cùng một dự án là abhorrent, nhưng về cơ bản tôi không coi phần MSBuild là một hệ thống xây dựng đầy đủ - nó chỉ là một cách dễ dàng để biên dịch và tôi không bao giờ cần phải tự kiểm tra tệp dự án. (Tôi chỉ tương tác với nó thông qua Visual Studio.) Tôi đã có thể phát triển Protocol Buffers của tôi xây dựng rất dễ dàng theo cách này, và tôi nghi ngờ tôi đã có cùng một kinh nghiệm nếu tôi đã sử dụng MSBuild.

Chẳng bao lâu tôi sẽ cố gắng xây dựng nó tất cả với Mono (khi 2.4 được phát hành - cho đến khi sau đó có showstoppers trong gmcs) tại thời điểm đó chúng tôi sẽ xem có bao di động chiến lược là ...

+0

Làm thế nào mà đi? Ba năm sau, bạn cảm thấy thế nào về các hệ thống xây dựng? Bạn vẫn muốn giới thiệu "msbuild bên trong nant"? – Weeble

+0

@Weeble: Đối với bộ đệm giao thức, chúng tôi hiện đang sử dụng MSbuild hoàn toàn - nhưng tôi không hiểu hệ thống xây dựng, thẳng thắn. Đối với thời gian Noda, tôi thậm chí không thực sự * có * một hệ thống xây dựng. Tôi đã nhìn thấy những điều tốt đẹp về psake, và cần phải nắm bắt điều đó một thời gian ... –

1

Một số điểm mà đến tâm trí:

  • bạn phải sử dụng msbuild nếu bạn đang làm việc với Windows Workflow Foundation (biên dịch tập tin * .xoml, có lẽ điều này cũng đúng cho WPF)
  • nếu bạn đang sử dụng để xây dựng thiết lập wix tập tin .msi bạn có thể sử dụng VisualStudio hoặc msbuild để biên dịch các tập lệnh wix (trong trường hợp của erro r VS có thể nhảy tới dòng có vấn đề trong tập lệnh wix)
  • msbuild cho phép bạn xây dựng môi trường tương tự như môi trường phát triển/Visual Studio (ví dụ: khi xây dựng với sự kiện postbuild msbuild được thực hiện, bạn không phải tự bảo trì danh sách các tệp * .cs thành csc, ...)

Nơi tôi làm việc, chúng tôi hiện đang sử dụng tập lệnh NAnt với nhiệm vụ msbuild từ NAntContrib.