2012-10-21 29 views
6

Tôi biết Trình quản lý gói như NuGet giúp chúng tôi khi chúng tôi muốn sử dụng các thành phần của bên thứ ba.Tại sao chúng ta cần một người quản lý gói như Nuget?

Từ NuGet Codeplex Page:

NuGet là một miễn phí, mã nguồn mở phát triển tập trung vào quản lý gói hệ thống cho mục đích nền tảng .NET về đơn giản hóa quá trình kết hợp thư viện của bên thứ ba vào một ứng dụng .NET trong phát triển.

Có một số lượng lớn các thư viện nguồn mở bên thứ 3 có ích ra có cho nền tảng .NET, nhưng đối với những người không quen thuộc với các hệ sinh thái OSS, nó có thể là một nỗi đau để kéo các thư viện này thành một dự án.

Hãy xem ELMAH làm ví dụ. Đó là một tiện ích ghi nhật ký lỗi tốt không có phụ thuộc vào các thư viện khác, nhưng vẫn là một thách thức để tích hợp vào một dự án. Đây là các bước cần thực hiện:

Find ELMAH 
Download the correct zip package. 
“Unblock” the package. 
Verify its hash against the one provided by the hosting environment. 
Unzip the package contents into a specific location in the solution. 
Add an assembly reference to the assembly. 
Update web.config with the correct settings which a developer needs to search for. 

Và đây là thư viện không có phụ thuộc. Hãy tưởng tượng làm điều này cho NHibernate.Linq có nhiều phụ thuộc mỗi cần các bước tương tự. Chúng ta có thể làm tốt hơn nhiều!

NuGet tự động hóa tất cả các tác vụ phổ biến và tẻ nhạt này đối với gói như cũng như các phụ thuộc của gói. Nó loại bỏ gần như tất cả những thách thức của kết hợp một thư viện mã nguồn mở bên thứ ba vào cây nguồn của dự án

các bước sau là nhiệm vụ đơn giản mà chúng ta làm khi chúng ta muốn thiết lập một dự án. chỉ cho tự động hóa việc thêm các thành phần của bên thứ ba và cơ hội nghị định của Lỗi trong tệp cấu hình? hoặc nó có nhiều trách nhiệm hơn?

+0

Tôi không chắc chắn những gì bạn đang hỏi, bạn có mong đợi nó làm điều gì khác không? – Betty

+0

tôi nghĩ rằng vấn đề mà một cái gì đó như Nuget muốn giải quyết không phải là một việc lớn! và trong một số trường hợp, nó thêm lớp phức tạp trong các công việc của nhóm, đặc biệt khi giao tiếp với các lập trình viên cơ sở. – Navid

+0

Bạn cần nó bởi vì nó làm tất cả những điều đó ..? – Patrick

Trả lời

17

Giá trị được ẩn trong phần mở: gói manager như NuGet giúp bạn xử lý các phụ thuộc phần mềm bằng tự động hóa. Nhiều người giả định rằng nó chỉ có nghĩa là cho các thành phần nguồn mở hoặc bên thứ ba, nhưng bạn có thể sử dụng nó cho các gói nội bộ của riêng bạn.

Những điều tuyệt vời về NuGet là (đến tên một vài lợi ích):

  • NuGet khuyến khích tái sử dụng các thành phần bởi vì bạn mặc nhiên dựa vào "giải phóng" thực tế (thậm chí nếu trước khi phát hành), thay vì phân nhánh nguồn
  • bạn có thể loại bỏ các tệp nhị phân làm đầy kho lưu trữ VCS của bạn (tính năng khôi phục gói)
  • nó buộc người tạo gói suy nghĩ về cách gói sẽ được sử dụng và để họ xử lý cấu hình của thành phần trong quá trình cài đặt gói. cách cấu hình gói tốt nhất so với người tạo gói?). Hãy suy nghĩ về ELMAH làm ví dụ.
  • tự động tạo và xuất bản gói trên kho lưu trữ gói một cách hiệu quả là hình thức gửi liên tục (đối với các thành phần phần mềm). OctopusDeploy thậm chí còn tiến thêm một bước nữa và cho phép đóng gói toàn bộ các trang Web sẵn sàng để triển khai.
  • NuGet khuyến khích và đôi khi buộc bạn phải tuân theo một số phương pháp hay nhất ALM. Ví dụ. một gói có phiên bản, vì vậy bạn phải suy nghĩ về chiến lược phiên bản của mình (ví dụ: SemVer.org)
  • NuGet tích hợp với SymbolSource.org (cũng có phiên bản Cộng đồng để thiết lập của riêng bạn): điều này cho phép dễ dàng gỡ lỗi các gói đã phát hành mà không phải gửi thông tin này mọi lúc
  • có một hoặc nhiều gói kho lưu trữ giúp tổ chức duy trì ma trận phụ thuộc dễ dàng hoặc thậm chí xây dựng một khoảng không quảng cáo giấy phép PMNM đang được một số dự án sử dụng
  • NuGet thông báo cho bạn về các bản cập nhật gói sẵn có
  • Tạo gói giúp mọi người nghĩ về kiến ​​trúc thành phần (tất cả các phụ thuộc cũng phải được đóng gói)
  • Phụ thuộc của gói là tự động omatically giải quyết (vì vậy bạn không thể quên bất kỳ)
  • NuGet là đủ thông minh để thêm ← liên kết lắp ráp ràng buộc khi có yêu cầu

Danh sách trên là không đầy đủ, nhưng tôi hy vọng tôi bao gồm những lợi ích quan trọng trong câu trả lời này . Tôi chắc chắn có nhiều hơn nữa.

Chúc mừng, Xavier

+0

Cảm ơn. tôi nghĩ rằng đó là những lợi ích ẩn mà tôi đã bỏ lỡ! Bài đăng tuyệt vời. – Navid

3

Lý do để sử dụng NuGet là bạn không cần phải gửi tất cả các thư viện trong dự án của bạn, giảm quy mô dự án. Với NuGet Power Tools, bằng cách chỉ định các phiên bản gói trong tệp Packages.config, bạn sẽ có thể tải xuống tất cả các thư viện được yêu cầu trong lần đầu tiên bạn chạy dự án.

Sống Exapmle: Giảm các vấn đề quy mô dự án khi triển khai các giải pháp project.Like nếu có 500MB mã và 200MB của gói kích thước sau đó thêm 200MB thực sự chi phí để tải lên dự án mỗi time.Instead tải lên bê tông dll tập tin chúng ta cần phải chỉ cần đặt tham chiếu của họ trong file packages.config.

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