Thêm gói vào dự án .NET của bạn

Đã hoàn thành

.NET đi kèm với nhiều thư viện cốt lõi xử lý mọi thứ, từ quản lý tệp đến HTTP đến nén tệp. Ngoài ra còn có một hệ sinh thái khổng lồ của các thư viện bên thứ ba. Bạn có thể sử dụng NuGet, trình quản lý gói .NET, để cài đặt các thư viện này và sử dụng chúng trong ứng dụng của bạn.

.NET và hệ sinh thái của nó sử dụng từ phụ rất nhiều. Phụ thuộc gói là thư viện của bên thứ ba. Đó là một đoạn mã có thể tái sử dụng thực hiện một cái gì đó và bạn có thể thêm vào ứng dụng của bạn. Thư viện của bên thứ ba là điều mà ứng dụng của phụ thuộc vào hoạt động, do đó từ phụ thuộc.

Bạn có thể nghĩ về thư viện của bên thứ ba như một gói được lưu trữ trong một kho lưu trữ. Gói bao gồm một hoặc nhiều thư viện mà bạn có thể thêm vào ứng dụng của mình để bạn có thể tận dụng các tính năng của nó.

Ở đây, chúng tôi tập trung vào phụ thuộc gói. Tuy nhiên, một dự án .NET có thể có các loại phụ thuộc khác ngoài phụ thuộc gói. Bao gồm, khuôn khổ, trình phân tích, tham chiếu dự án và các phụ thuộc dự án dùng chung.

Xác định xem bạn có cần gói không

Làm thế nào để bạn biết được mình có cần một gói cho dự án của mình hay không? Đó là một câu hỏi phức tạp liên quan đến một vài yếu tố:

  • Cải thiện mã: Hãy tự hỏi xem bạn có đang xử lý một tác vụ chẳng hạn như bảo mật hay không và đang cố gắng triển khai xác thực và ủy quyền. Đó là một nhiệm vụ mà bạn cần để có được quyền truy bảo vệ dữ liệu và dữ liệu khách hàng của bạn. Có những mô hình tiêu chuẩn ra có và thư viện mà nhiều nhà phát triển sử dụng. Các thư viện này thực hiện các tính năng mà bạn có thể luôn luôn cần, và các vấn đề được vá khi chúng phát sinh. Bạn nên sử dụng các thư viện như vậy thay vì tạo thư viện của riêng bạn. Bạn không có khả năng tự viết mã, vì có rất nhiều trường hợp cạnh mà bạn cần xem xét.
  • tiết kiệm thời gian: Bạn có thể tự xây dựng hầu hết mọi thứ, chẳng hạn như thư viện cấu phần tiện ích hoặc giao diện người dùng, nhưng phải mất thời gian. Ngay cả khi kết quả của bạn có thể so sánh được với kết quả sẵn dùng, bạn cũng không nên sử dụng thời gian để sao chép công việc.
  • bảo trì: Tất cả các thư viện và ứng dụng đều cần bảo trì sớm hay muộn. Bảo trì liên quan đến việc thêm các tính năng mới và sửa lỗi. Đó là một sử dụng tốt thời gian của bạn hoặc thời gian của nhóm bạn để duy trì một thư viện, hoặc là tốt hơn để cho một nhóm phần mềm mã nguồn mở xử lý nó?

Đánh giá gói

Trước khi cài đặt thư viện, bạn có thể muốn kiểm tra các phụ thuộc mà thư viện đó dựa vào. Những quan hệ phụ thuộc này có thể khuyến khích bạn sử dụng gói hoặc chúng có thể ngăn chặn bạn. Dưới đây là một số yếu tố cần xem xét khi bạn chọn phụ thuộc cho dự án của mình:

  • kích: Số lượng quan hệ phụ thuộc có thể tạo ra một dấu chân lớn. Nếu bạn đang sử dụng băng thông giới hạn hoặc có các giới hạn khác về phần cứng, thì yếu tố này có thể là mối lo ngại.
  • cấp phép: Bạn cần phải đảm bảo rằng giấy phép được cấp cho thư viện bao gồm mục đích sử dụng dự kiến của bạn, cho dù đó là mục đích thương mại, cá nhân hay học thuật.
  • bảo trìđộng: Đó có thể là một vấn đề nếu gói hàng của bạn dựa vào một phụ thuộc không được chủ động duy trì. Sự phụ thuộc có thể bị phản đối hoặc không được cập nhật trong một thời gian dài.

Bạn có thể tìm hiểu thêm về gói trước khi cài đặt bằng cách đi tới https://www.nuget.org/packages/<package name>. URL này sẽ đưa bạn đến trang chi tiết cho gói. Chọn danh thả xuống Phụ để xem nó dựa vào gói nào để hoạt động.

Số lượng phụ thuộc được liệt kê có thể không nói lên toàn bộ sự thật. Nếu bạn tải xuống một gói, bạn có thể kết thúc bằng một sự phụ thuộc gói có chứa hàng tá gói. Tại sao lại thế? Mỗi gói đều có một danh sách các phụ thuộc. Để đảm bảo rằng bạn có thể dùng một gói, tất cả các quan hệ phụ thuộc đều được tìm kéo và tải xuống khi bạn chạy dotnet add package <package name> này.

Cài đặt gói

Có một số cách để cài đặt gói. Có dòng lệnh tích hợp sẵn và giao diện người dùng đồ họa cho trình quản lý gói trong Visual Studio và Visual Studio for Mac. Bạn có thể thêm thủ công các tham chiếu gói vào tệp dự án của mình hoặc bạn có thể cài đặt chúng thông qua một công cụ giao diện dòng lệnh (CLI), chẳng hạn như Paket hoặc .NET Core CLI.

Đối với mô-đun này, chúng tôi sử dụng .NET Core CLI tích hợp sẵn để cài đặt các gói. Bạn có thể thêm gói vào dự án .NET của mình bằng cách gọi lệnh trong thiết bị đầu cuối. Lệnh cài đặt điển hình trông như thế này: dotnet add package <name of package>. Khi bạn chạy lệnh add package, công cụ dòng lệnh sẽ kết nối với sổ đăng ký toàn cầu, tìm nạp gói và lưu trữ gói đó trong vị trí thư mục lưu trong bộ đệm ẩn mà tất cả dự án đều có thể sử dụng.

Sau khi cài đặt và xây dựng dự án của bạn, các tham chiếu sẽ được thêm vào thư mục gỡ lỗi hoặc phát hành của bạn. Thư mục dự án của bạn trông giống như thế này:

-| bin/
---| Debug/
------| net3.1
--------| <files included in the dependency>

Tìm gói

Các nhà phát triển cá nhân có thể sử dụng sổ đăng ký toàn cầu NuGet.org để tìm và tải xuống các gói mà họ cần cho các ứng dụng của mình. Một công ty có thể có một chiến lược tại chỗ cho những gói nào ok để sử dụng và nơi để tìm chúng.

ảnh chụp màn hình NuGet.org hiển thị danh sách các gói phổ biến.

Gói hàng có thể nằm ở nhiều nơi khác nhau. Một số trong những nguồn này có thể sẵn dùng công khai và một số nguồn có thể bị hạn chế và chỉ dành cho nhân viên của một công ty cụ thể. Dưới đây là một số nơi mà các gói có thể nằm trong đó:

  • : Một ví dụ có thể là sổ đăng ký toàn cầu, chẳng hạn như sổ đăng NuGet.org ký. Bạn có thể lưu trữ các đăng ký riêng tư hoặc công khai. Các dịch vụ như GitHub và Azure DevOps cung cấp các đăng ký riêng tư.
  • tệp: Bạn có thể cài đặt gói từ thư mục cục bộ. Việc cài đặt từ một gói rất phổ biến khi bạn đang cố gắng phát triển các thư viện .NET của riêng bạn và muốn kiểm tra gói trên máy cục bộ. Hoặc vì một số lý do bạn không muốn sử dụng sổ đăng ký.

đồ minh họa mối quan hệ giữa người tạo gói, máy chủ gói và người tiêu dùng gói.

NuGet registry và dotnet tool

Khi bạn chạy dotnet add package <name of dependency>, .NET sẽ đi đến sổ đăng ký toàn cầu có tên là sổ đăng ký NuGet.org nằm tại https://nuget.org và tìm mã để tải xuống. Bạn cũng có thể duyệt qua trang này để tìm các gói nếu bạn truy cập trang này bằng cách sử dụng trình duyệt. Mỗi gói có một trang web chuyên dụng mà bạn có thể đi đến.

ảnh chụp màn hình trang đích của gói NuGet.

Trên các site này, bạn có thể tìm hiểu thêm về vị trí của mã nguồn. Bạn cũng có thể tìm thấy các thông tin như số liệu về nội dung tải xuống và thông tin về bảo trì.

ảnh chụp màn hình thông tin và số liệu trên gói NuGet.

Lệnh .NET

Cho đến nay, bạn đã học được cách bạn có thể cài đặt các quan hệ phụ thuộc bằng cách sử dụng .NET Core CLI. Nhưng công cụ này có thể làm được nhiều hơn nữa.

.NET Core CLI có khá nhiều lệnh. Các lệnh này sẽ giúp bạn thực hiện các tác vụ như cài đặt gói, tạo gói và khởi tạo dự án .NET. Bạn không cần phải biết chi tiết tất cả các lệnh. Khi bạn bắt đầu với .NET, bạn có thể chỉ sử dụng một tập hợp con các lệnh. Khi bạn mở rộng việc sử dụng .NET, bạn có thể sử dụng nhiều lệnh hơn từ các danh mục khác nhau.

Để giúp bạn nhớ những gì các lệnh thực hiện, sẽ hữu ích nếu bạn nghĩ chúng thuộc về các thể loại:

  • quản lý quan hệ phụ: Các lệnh trong cài đặt vỏ bảo vệ thể loại này, loại bỏ, dọn dẹp sau khi cài đặt gói và cập nhật gói.
  • Chạy chương trình: Công cụ .NET Core có thể giúp bạn quản lý các dòng trong quá trình phát triển ứng dụng của mình. Ví dụ về dòng ứng dụng đang chạy kiểm tra, xây dựng mã và chạy lệnh di chuyển để nâng cấp dự án.
  • tác giả và phát hành: Một số lệnh có thể giúp bạn với các tác vụ như tạo gói nén và đẩy gói vào sổ đăng ký.

Nếu bạn muốn có một danh sách chi tiết của tất cả các lệnh, dotnet --help vào thiết bị đầu cuối.

Cách cài đặt gói

Dùng lệnh dotnet add package <dependency name> để cài đặt một quan hệ phụ thuộc bình thường vốn được dùng như một phần của ứng dụng của bạn.

Ghi

Bạn có thể cài đặt một số gói toàn cầu. Các gói này không được nhập vào dự án của bạn. Vì lý do đó, nhiều gói toàn cầu là các công cụ hoặc mẫu CLI. Bạn cũng có thể cài đặt các công cụ toàn cầu này từ một kho chứa gói. Cài đặt công cụ bằng cách sử dotnet tool install <name of package> lệnh. Cài đặt mẫu bằng cách sử dotnet new -i <name of package> lệnh.

Sau khi cài đặt

Các gói đã cài đặt được liệt kê trong dependencies của tệp .csproj bạn. Nếu bạn muốn xem gói nào nằm trong thư mục, bạn có thể nhập dotnet list package.

Project 'DotNetDependencies' has the following package references
   [net8.0]:
   Top-level Package      Requested   Resolved
   > Humanizer            2.7.9       2.7.9

Lệnh này chỉ liệt kê các gói mức cao nhất và không liệt kê các gói phụ thuộc của những gói mà chúng tôi gọi là gói chuyển tiếp. Lệnh này rất hay để xem nhanh. Nếu bạn muốn có dạng xem chuyên sâu hơn, bạn có thể liệt kê tất cả các gói chuyển tiếp. Khi bạn làm như vậy, lệnh list sẽ trông như thế này:

dotnet list package --include-transitive

Bao gồm các thiết bị chuyển tiếp cho phép bạn xem các quan hệ phụ thuộc cùng với tất cả các gói bạn đã cài đặt. Nếu bạn chạy dotnet list package --include-transitive, bạn có thể nhận được đầu ra này:

Project 'DotNetDependencies' has the following package references
   [net8.0]:
   Top-level Package      Requested   Resolved
   > Humanizer            2.7.9       2.7.9

   Transitive Package               Resolved
   > Humanizer.Core                 2.7.9
   > Humanizer.Core.af              2.7.9
   > Humanizer.Core.ar              2.7.9
   > Humanizer.Core.bg              2.7.9
   > Humanizer.Core.bn-BD           2.7.9
   > Humanizer.Core.cs              2.7.9
   ...

Khôi phục quan hệ phụ thuộc

Khi bạn tạo hoặc sao chép dự án, các quan hệ phụ thuộc được bao gồm sẽ không được tải xuống hoặc cài đặt cho đến khi bạn xây dựng dự án của mình. Bạn có thể khôi phục theo cách thủ công các quan hệ phụ thuộc và các công cụ dành riêng cho dự án được xác định trong tệp dự án, bằng cách chạy lệnh dotnet restore dự án. Trong hầu hết các trường hợp, bạn không cần sử dụng lệnh một cách rõ ràng. NuGet khôi phục chạy ngầm, nếu cần thiết, khi bạn chạy các lệnh như new, build, và run.

Dọn dẹp quan hệ phụ thuộc

Sớm hay muộn, bạn có thể nhận ra rằng bạn không còn cần một gói nữa. Hoặc bạn có thể nhận ra rằng gói bạn đã cài đặt không phải là gói bạn cần. Có lẽ bạn tìm thấy một trong đó hoàn thành một nhiệm vụ tốt hơn. Dù là lý do gì, bạn cũng nên loại bỏ các quan hệ phụ thuộc mà bạn không sử dụng. Làm như vậy sẽ giữ cho mọi thứ sạch sẽ. Ngoài ra, các quan hệ phụ thuộc chiếm dung lượng.

Để loại bỏ gói khỏi dự án của bạn, hãy sử dụng lệnh remove, chẳng hạn như: dotnet remove package <name of dependency>. Lệnh này loại bỏ gói khỏi tệp lưu trữ dự .csproj của bạn.