2012-03-20 43 views
36

Tôi không hiểu - có thể ai đó vui lòng giải thích cho tôi tại sao tôi nên sử dụng NuGet thay vì cài đặt một loạt thư viện thông qua setup.exe hoặc MSI? Lợi thế là gì?Tại sao sử dụng NuGet trên thư viện cài đặt trực tiếp trên máy của tôi

Ví dụ: tốt hơn là cài đặt Entity Framework 4.3 qua NuGet thay vì tải xuống thiết lập? Ngoài ra, nếu tôi cài đặt khung thực thể thông qua NuGet thì nó có sẵn cho bất kỳ giải pháp hoặc dự án mới nào mà tôi tạo ra (bit nhầm lẫn ở đây).

Về cơ bản những gì NuGet làm điều đó một bình thường cài đặt không làm (hoặc ngược lại!)

Trả lời

32

Bên cạnh việc đơn giản hóa việc thêm gói vào dự án của bạn, tôi nghĩ lợi thế lớn nhất của NuGet là quản lý sự phụ thuộc.

NuGet cho phép chủ sở hữu dự án đóng gói thư viện của mình dưới dạng gói. Trước đây, nếu chúng phụ thuộc vào các thư viện khác như log4net, chúng sẽ bao gồm các assembly đó trong tập tin cài đặt/zip của chúng và tải lên trang web của chúng.

Với NuGet, chúng chỉ cần thêm tham chiếu đến các gói bên ngoài này trong tệp .nuspec. Khi NuGet cài đặt gói, nó sẽ thấy rằng có những phụ thuộc và sẽ tự động tải xuống và cài đặt các gói đó. Nó cũng hỗ trợ quản lý xung đột để nếu 2 gói phụ thuộc vào các phiên bản khác nhau, nó sẽ tìm ra đúng cài đặt.

Tôi nghĩ cách tốt nhất để xác định xem NuGet có hiệu quả với bạn hay không là hãy thử sử dụng nó.Tôi chắc chắn rằng một khi bạn làm, bạn sẽ nhận ra rằng nó có nhiều lợi ích.

+0

'cũng sẽ tự động tải xuống và cài đặt các gói đó', điều gì sẽ xảy ra nếu internet không có sẵn trên trang web? – bjan

+0

"Tự động tải xuống" là tham chiếu đến các phụ thuộc. Cài đặt gói ban đầu được khởi xướng bởi người dùng. Đối với không có truy cập Internet, bạn có thể tải xuống tất cả các gói bạn cần từ một vị trí khác, và sau đó sao chép chúng vào máy đích. Bây giờ bạn có thể thêm thư mục cục bộ vào kho chứa gói NuGet của bạn và các cài đặt sẽ kéo từ đó thay vì nuget.org. – Kiliman

+0

Gần đây tôi đã gặp phải một vấn đề khiến tôi bối rối. Tôi đã phát triển một giải pháp có nhiều thư viện trợ giúp (của tôi), các thư viện khác nhau đã sử dụng các gói khác nhau được thêm vào thông qua nuget. Tôi tham chiếu một trong những thư viện (tập tin dll đơn) vào một giải pháp khác và trên Build, VS2010 phàn nàn về thư viện được giới thiệu chứ không phải là gói bị thiếu. Có cách nào tôi có thể biết được gói nào bị thiếu/yêu cầu trong trường hợp cụ thể này. – bjan

19

NuGet cung cấp một số lợi ích bổ sung:

  • nó tự động điều chỉnh cấu hình dự án của bạn bằng cách thêm tham chiếu đến các hội đồng cần thiết, tạo và thêm các tệp dự án (ví dụ: cấu hình), v.v.
  • nó cung cấp các bản cập nhật gói
  • tất cả điều này là rất thuận tiện
16

lợi thế gì là có?

Nuget đơn giản hóa việc kết hợp thư viện thứ ba: Với một dòng lệnh (Install-Package EntityFramework) bạn tạo gói sẵn sàng cho dự án của mình. Thay vì googling-tìm gói-download-setup-tham chiếu gói trong dự án của bạn ...

Tự động cập nhật không bắt buộc, tệp cấu hình Nuget cho phép bạn chỉ định phiên bản hoặc phạm vi phiên bản mà ứng dụng của bạn tương ứng với.

Ngoài ra, nếu tôi cài đặt khuôn khổ thực thể qua NuGet sau đó là nó có sẵn cho bất kỳ giải pháp hay dự án mà tôi tạo

Khi bạn cài đặt một gói phần mềm mới, dlls được sao chép trong một thư mục tại giải pháp mức độ, sau đó bạn có thể tham khảo chúng từ đó trong các dự án khác của giải pháp của bạn.

Đối với mỗi giải pháp mới, cài đặt lại gói là giải pháp tốt hơn. Vì nó rất dễ dàng với nuget, nó sẽ không là một vấn đề.

+0

+1 để nói rằng các gói được cài đặt ở cấp độ giải pháp. Nó không phải là không phổ biến để có nhiều ứng dụng web (dự án) trong một giải pháp duy nhất và nuget đã được bảo hiểm. – styfle

+0

Tôi đã phát triển một giải pháp có nhiều thư viện trợ giúp, các thư viện khác nhau đang sử dụng các gói khác nhau được thêm qua nuget. Tôi tham chiếu một trong những thư viện (tập tin dll đơn) vào một giải pháp khác và trên Build, VS2010 phàn nàn về thư viện được giới thiệu chứ không phải là gói bị thiếu. – bjan

5

Nuget góp phần tạo ra một địa ngục DLL và làm cho giải pháp mất kiểm soát rất nhanh, đặc biệt là khi các phiên bản khác nhau của cái gọi là "gói" đi vào chơi. Ngoài phiên bản lắp ráp, hiện có các phiên bản gói nuget. Nuget chỉ thêm một trình bao bọc khác vào các tệp DLL và không làm gì để làm cho cuộc sống của các nhà phát triển dễ dàng hơn.

+1

Câu hỏi đặt ra là - tại sao người ta nên sử dụng Nuget. Câu trả lời của tôi là - để làm cho cuộc sống của họ khó khăn hơn và tăng cường các vấn đề địa ngục dll. Làm thế nào điều này không cung cấp một câu trả lời? –

+0

Cảm ơn bạn đã cung cấp giọng nói cân bằng. Tôi muốn OP sẽ yêu cầu ưu và nhược điểm. –

+1

Vì vậy, nếu ai đó hỏi "Tại sao tôi lại đẹp như vậy?" trên ngăn xếp tràn các câu trả lời duy nhất mà nên xuất hiện là giải thích như thế nào đẹp người đó là? Mặc dù câu hỏi là yêu cầu cho tích cực nó là xây dựng hơn để xem xét tiêu cực là tốt. – bryjohns

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