Chào mừng bạn quay trở lại với chuỗi bài viết “Lộ trình .NET”! Nếu bạn đã theo dõi hành trình của chúng ta từ những bước đầu với C# cơ bản, tìm hiểu về lộ trình ASP.NET Core, và đặc biệt là đã khám phá hệ sinh thái .NET bao gồm Runtime, SDK và CLI, thì hôm nay, chúng ta sẽ đi sâu vào một trong những công cụ mạnh mẽ và linh hoạt nhất trong bộ công cụ của lập trình viên .NET: Giao diện dòng lệnh .NET, hay còn gọi là .NET CLI.
.NET CLI không chỉ là một công cụ phụ trợ; nó là trung tâm của nhiều quy trình làm việc hiện đại, cho phép bạn tạo, xây dựng, chạy, kiểm thử, và đóng gói ứng dụng .NET trực tiếp từ terminal hoặc command prompt. Việc làm chủ .NET CLI không chỉ giúp bạn làm việc hiệu quả hơn mà còn mở ra cánh cửa tự động hóa các tác vụ lặp đi lặp lại trong quá trình phát triển.
Trong bài viết này, chúng ta sẽ cùng nhau khám phá các lệnh .NET CLI thiết yếu nhất mà bạn sẽ sử dụng hàng ngày, từ việc khởi tạo dự án cho đến triển khai ứng dụng. Dù bạn là lập trình viên mới bắt đầu hay muốn củng cố kiến thức, việc nắm vững các lệnh này là cực kỳ quan trọng.
Mục lục
Tại Sao Lại Là .NET CLI?
Trước khi đi vào chi tiết các lệnh, hãy cùng nhắc lại một chút về lý do tại sao .NET CLI lại quan trọng:
- Đa nền tảng: Chạy trên Windows, macOS, và Linux một cách nhất quán.
- Nhẹ nhàng: Không yêu cầu giao diện người dùng đồ họa phức tạp, lý tưởng cho môi trường server hoặc container.
- Tự động hóa: Dễ dàng tích hợp vào các script CI/CD (Tích hợp liên tục / Triển khai liên tục).
- Nhất quán: Cung cấp một cách thức chuẩn để tương tác với .NET SDK, giảm thiểu sự khác biệt giữa các môi trường phát triển.
- Linh hoạt: Cho phép tùy chỉnh sâu các quy trình build và publish.
Với những lợi ích này, việc thành thạo .NET CLI là một bước tiến lớn trên con đường trở thành một lập trình viên .NET chuyên nghiệp.
Bắt Đầu Với .NET CLI: Cú Pháp Cơ Bản
Để sử dụng .NET CLI, bạn chỉ cần mở terminal (trên macOS/Linux) hoặc Command Prompt/PowerShell (trên Windows). Sau khi cài đặt .NET SDK, lệnh chính bạn sẽ dùng là dotnet
.
Cú pháp chung của hầu hết các lệnh .NET CLI là:
dotnet [lệnh] [tên-ứng-dụng-hoặc-dự-án] [tùy-chọn] [tham-số]
dotnet
: Tên chương trình thực thi.[lệnh]
: Hành động bạn muốn thực hiện (ví dụ:new
,build
,run
,publish
).[tên-ứng-dụng-hoặc-dự-án]
: Thường là tên của file solution hoặc project bạn đang làm việc, hoặc tên file output.[tùy-chọn]
: Các cờ để tùy chỉnh hành vi của lệnh (ví dụ:-o
,-c
,--framework
).[tham-số]
: Các giá trị bổ sung cần thiết cho lệnh hoặc tùy chọn.
Bạn luôn có thể gõ dotnet --help
để xem danh sách các lệnh chính, hoặc dotnet [lệnh] --help
để xem chi tiết về một lệnh cụ thể và các tùy chọn của nó. Đây là một thói quen tốt cần duy trì.
Các Lệnh .NET CLI Thiết Yếu Cho Lập Trình Hàng Ngày
Bây giờ, hãy cùng đi sâu vào các lệnh mà bạn chắc chắn sẽ sử dụng thường xuyên:
dotnet new
: Khởi Tạo Dự Án và Solution
Đây là lệnh đầu tiên bạn sẽ dùng khi bắt đầu một dự án mới. dotnet new
cho phép bạn tạo các dự án dựa trên các template có sẵn.
# Tạo một ứng dụng console mới trong thư mục hiện tại
dotnet new console
# Tạo một ứng dụng web ASP.NET Core mới (template webapp)
dotnet new webapp -o MyWebApp
# Tạo một thư viện class
dotnet new classlib -o MyLibrary
# Tạo một file solution (.sln)
dotnet new sln -o MySolution
# Tạo một project test xUnit
dotnet new xunit -o MyTests
# Xem danh sách tất cả các template có sẵn
dotnet new --list
Tùy chọn -o
hoặc --output
chỉ định thư mục (và tên) nơi dự án/solution sẽ được tạo. Nếu không sử dụng -o
, dự án sẽ được tạo trong thư mục hiện tại.
dotnet add reference
: Thêm Tham Chiếu Dự Án
Trong các giải pháp lớn hơn, bạn thường có nhiều dự án (ví dụ: một dự án web, một dự án thư viện, một dự án test). Lệnh này giúp bạn thêm tham chiếu từ dự án này sang dự án khác.
# Giả sử bạn đang trong thư mục của dự án MyWebApp
# Thêm tham chiếu đến dự án MyLibrary (đường dẫn tương đối)
dotnet add reference ../MyLibrary/MyLibrary.csproj
Bạn cần đứng trong thư mục gốc của dự án (nơi có file .csproj
) khi thực thi lệnh này.
dotnet add package
: Thêm Gói NuGet
NuGet là trình quản lý gói cho .NET. Lệnh này cho phép bạn thêm các thư viện từ NuGet.org (hoặc các nguồn khác) vào dự án của mình.
# Giả sử bạn đang trong thư mục của dự án cần thêm gói
# Thêm gói Newtonsoft.Json (phiên bản mới nhất)
dotnet add package Newtonsoft.Json
# Thêm gói Newtonsoft.Json phiên bản cụ thể
dotnet add package Newtonsoft.Json --version 13.0.1
# Thêm gói chỉ cho framework cụ thể (ít dùng trong trường hợp thông thường)
# dotnet add package MyPackage --framework net6.0
Tương tự như add reference
, bạn cần ở trong thư mục dự án.
dotnet restore
: Khôi Phục Gói Phụ Thuộc
Khi bạn clone một repository chứa dự án .NET hoặc khi bạn thêm/xóa gói NuGet thủ công trong file .csproj
, bạn cần khôi phục các gói phụ thuộc. Lệnh dotnet restore
sẽ tải xuống và cài đặt tất cả các gói cần thiết được liệt kê trong file dự án.
# Khôi phục gói cho dự án trong thư mục hiện tại
dotnet restore
# Khôi phục gói cho một solution file cụ thể
dotnet restore MySolution.sln
# Khôi phục gói cho một project file cụ thể
dotnet restore MyProject.csproj
Tin tốt là các lệnh như dotnet new
, dotnet build
, dotnet run
, dotnet test
, và dotnet publish
đều tự động gọi dotnet restore
nếu cần, vì vậy bạn không cần phải chạy nó thủ công thường xuyên, trừ khi bạn chỉnh sửa file .csproj
trực tiếp.
dotnet build
: Biên Dịch Mã Nguồn
Lệnh dotnet build
biên dịch mã nguồn của dự án và kiểm tra lỗi cú pháp.
# Build dự án trong thư mục hiện tại
dotnet build
# Build một solution file cụ thể
dotnet build MySolution.sln
# Build với cấu hình 'Release' thay vì 'Debug' (mặc định)
dotnet build -c Release
# Chỉ định framework mục tiêu (ví dụ: net6.0)
dotnet build --framework net6.0
Kết quả của lệnh build (các file .dll
, .exe
) thường nằm trong thư mục bin/[Cấu hình]/[Framework mục tiêu]
, ví dụ: bin/Debug/net6.0
.
dotnet run
: Chạy Ứng Dụng
Lệnh dotnet run
thực hiện hai bước: đầu tiên là build dự án (nếu có thay đổi) và sau đó thực thi ứng dụng.
# Build và chạy dự án trong thư mục hiện tại
dotnet run
# Chạy dự án với cấu hình 'Release'
dotnet run -c Release
# Truyền tham số dòng lệnh cho ứng dụng đang chạy
dotnet run -- arg1 arg2
Lưu ý cú pháp --
để phân tách các tham số của lệnh dotnet run
với các tham số bạn muốn truyền cho ứng dụng của mình.
dotnet watch
: Giám Sát Thay Đổi và Chạy Lại
Trong quá trình phát triển, việc thay đổi mã nguồn và chạy lại ứng dụng liên tục là rất phổ tạp. Lệnh dotnet watch
giúp tự động hóa điều này. Nó lắng nghe sự thay đổi trong file nguồn và tự động build hoặc build/run lại ứng dụng.
# Giám sát và chạy lại ứng dụng (build + run khi có thay đổi)
dotnet watch run
# Giám sát và chỉ build lại khi có thay đổi
dotnet watch build
# Giám sát và chạy lại với hot reload được bật
dotnet watch --non-interactive hotreload
dotnet watch run
là lệnh cực kỳ hữu ích cho các ứng dụng web ASP.NET Core, đặc biệt khi kết hợp với Hot Reload (tự động cập nhật mã mà không cần khởi động lại ứng dụng trong nhiều trường hợp).
dotnet test
: Chạy Unit Tests
Viết và chạy unit test là một phần quan trọng của quy trình phát triển chất lượng cao. Lệnh dotnet test
tìm và thực thi các test trong dự án test của bạn.
# Tìm và chạy tất cả các test trong dự án test hiện tại
dotnet test
# Chạy test cho một solution file cụ thể
dotnet test MySolution.sln
# Chạy test cho một project test cụ thể
dotnet test MyTests.csproj
# Lọc test theo tên (ví dụ: chạy test có tên chứa "Calculate")
dotnet test --filter "Name~Calculate"
# Xuất kết quả test ra file (ví dụ: định dạng TRX)
dotnet test --logger trx
Để lệnh dotnet test
hoạt động, dự án test của bạn cần tham chiếu đến framework test như xUnit, NUnit hoặc MSTest.
dotnet publish
: Đóng Gói Ứng Dụng Để Triển Khai
Khi ứng dụng của bạn sẵn sàng để triển khai lên server hoặc gửi cho người dùng, bạn sẽ sử dụng lệnh dotnet publish
. Lệnh này biên dịch ứng dụng, thu thập tất cả các file cần thiết (assembly, tài nguyên, config) vào một thư mục duy nhất, sẵn sàng để copy đi.
# Publish ứng dụng với cấu hình 'Release' vào thư mục mặc định (bin/Release/[Framework]/publish)
dotnet publish -c Release
# Publish ứng dụng vào một thư mục cụ thể
dotnet publish -c Release -o ./publish
# Publish ứng dụng dưới dạng Self-contained (bao gồm cả .NET Runtime) cho một hệ điều hành/kiến trúc cụ thể
dotnet publish -c Release -r win-x64 --self-contained true
# Publish ứng dụng dưới dạng Framework-dependent (yêu cầu .NET Runtime đã được cài đặt trên server)
dotnet publish -c Release -r win-x64 --self-contained false
-c Release
: Luôn publish với cấu hình Release cho hiệu suất và kích thước file tốt nhất.-o
: Chỉ định thư mục output.-r [RID]
: Runtime Identifier, chỉ định nền tảng mục tiêu (ví dụ:win-x64
,linux-x64
,osx-arm64
). Cần thiết khi tạo ứng dụng Self-contained.--self-contained [true/false]
: Quyết định liệu ứng dụng có bao gồm .NET Runtime hay không.
Lệnh publish
là bước cuối cùng trước khi bạn đưa ứng dụng của mình ra môi trường production.
dotnet --info
: Thông Tin Môi Trường
Khi gặp sự cố liên quan đến môi trường .NET (ví dụ: lỗi build do phiên bản SDK), lệnh dotnet --info
cung cấp thông tin chi tiết về các phiên bản .NET SDK và Runtime đã cài đặt trên máy của bạn.
dotnet --info
Kết quả sẽ liệt kê các phiên bản SDK, Runtime, môi trường hệ điều hành, và các thông tin hữu ích khác. Đây là lệnh chẩn đoán lỗi rất quan trọng.
dotnet tool
: Quản Lý Global/Local Tools
.NET CLI hỗ trợ các “Global Tools” hoặc “Local Tools” là các ứng dụng console được cài đặt thông qua NuGet và có thể chạy từ dòng lệnh. Một ví dụ phổ biến là Entity Framework Core CLI (`dotnet-ef`).
# Cài đặt một global tool (ví dụ: dotnet-ef)
dotnet tool install --global dotnet-ef
# Chạy một global tool
dotnet ef database update
# Gỡ cài đặt một global tool
dotnet tool uninstall --global dotnet-ef
# Cài đặt local tool cho dự án (thêm file .config/dotnet-tools.json)
dotnet tool install --local dotnet-ef
Việc sử dụng local tool giúp đảm bảo tất cả các nhà phát triển trong một dự án sử dụng cùng một phiên bản của tool.
Bảng Tổng Kết Các Lệnh Quan Trọng
Để dễ dàng tra cứu, dưới đây là bảng tóm tắt các lệnh .NET CLI thiết yếu mà chúng ta đã thảo luận:
Lệnh (.NET Command) | Chức năng Chính | Cú pháp Ví Dụ |
---|---|---|
dotnet new |
Khởi tạo dự án, solution từ template. | dotnet new webapp -o MyWebApp |
dotnet add reference |
Thêm tham chiếu từ project này sang project khác. | dotnet add reference ../MyLibrary/MyLibrary.csproj |
dotnet add package |
Thêm gói NuGet vào project. | dotnet add package Newtonsoft.Json |
dotnet restore |
Khôi phục các gói phụ thuộc cho project/solution. (Thường tự động) | dotnet restore MySolution.sln |
dotnet build |
Biên dịch mã nguồn project/solution. | dotnet build -c Release |
dotnet run |
Build và chạy ứng dụng. | dotnet run --project ./src/MyApp |
dotnet watch |
Giám sát file nguồn, tự động build/run lại. | dotnet watch run |
dotnet test |
Tìm và chạy các bài kiểm thử (unit tests). | dotnet test --filter "Category=Unit" |
dotnet publish |
Đóng gói ứng dụng sẵn sàng cho triển khai. | dotnet publish -c Release -o ./output -r win-x64 |
dotnet --info |
Hiển thị thông tin chi tiết về môi trường .NET SDK/Runtime. | dotnet --info |
dotnet tool |
Cài đặt, quản lý, chạy các .NET Global/Local Tools. | dotnet tool install --global dotnet-ef |
Lời Khuyên Khi Sử Dụng .NET CLI
- Sử dụng Tab Completion: Hầu hết các terminal hiện đại hỗ trợ tự động hoàn thành (tab completion) cho các lệnh
dotnet
, tên file/thư mục, và thậm chí cả một số tùy chọn. Hãy tận dụng nó để gõ nhanh và tránh sai sót. - Hiểu về Working Directory: Hầu hết các lệnh CLI hoạt động dựa trên thư mục hiện hành. Đảm bảo bạn đang ở đúng thư mục (gốc solution, gốc project,…) khi thực thi lệnh.
- Sử dụng
--help
: Khi không chắc về cú pháp hoặc tùy chọn của một lệnh nào đó, chỉ cần thêm--help
vào cuối lệnh (ví dụ:dotnet publish --help
). - Kết hợp các tùy chọn: Nhiều tùy chọn có thể được kết hợp trong một lệnh duy nhất để tùy chỉnh hành vi (ví dụ:
dotnet publish -c Release -o ./deploy -r linux-x64
).
.NET CLI và IDEs: Cùng Tồn Tại
Mặc dù .NET CLI rất mạnh mẽ, điều đó không có nghĩa là bạn phải từ bỏ các IDEs như Visual Studio hay VS Code. Thực tế, các IDEs này thường gọi các lệnh .NET CLI “dưới nắp capo” khi bạn click vào “Build”, “Run”, “Publish”, v.v. Việc hiểu rõ .NET CLI giúp bạn hiểu hơn về những gì IDE đang làm, gỡ lỗi hiệu quả hơn và tự tin hơn khi làm việc trong môi trường không có GUI.
Kết Luận
Làm chủ .NET CLI là một kỹ năng vô giá cho bất kỳ lập trình viên .NET nào. Nó tăng tốc quy trình làm việc, cho phép tự động hóa, và mang lại sự linh hoạt khi làm việc trên các nền tảng khác nhau. Các lệnh dotnet new
, build
, run
, watch
, test
, và publish
là xương sống của công việc phát triển hàng ngày.
Hy vọng rằng bài viết này đã cung cấp cho bạn một cái nhìn toàn diện và thực tế về cách sử dụng các lệnh .NET CLI quan trọng nhất. Cách tốt nhất để học là thực hành. Hãy mở terminal lên, tạo một dự án thử nghiệm mới và bắt đầu làm quen với từng lệnh một.
Hẹn gặp lại bạn trong các bài viết tiếp theo của chuỗi “Lộ trình .NET”, nơi chúng ta sẽ tiếp tục khám phá những khía cạnh thú vị và quan trọng khác của hệ sinh thái .NET!