dotnet CLI — new, build, run, add, restore

~10 daq · .NET Backend · Kirish — .NET Ekosistemi

Muammodan boshlaylik

Siz GitHub dan loyiha yuklab oldingiz. dotnet run bosasiz — xato: paketlar topilmadi. Yoki hamkasbingiz "NuGet dan Newtonsoft.Json qo'sh" deydi — qanday?

dotnet buyrug'i — .NET bilan ishlashning asosiy vositasi. Shu buyruqni bilmasdan kundalik ishni qilib bo'lmaydi.


dotnet CLI nima?

CLI (Command Line Interface) — terminal orqali .NET bilan ishlash vositasi. VS Code tugmalarini bosish o'rniga bir qator yozib bir xil natijaga erishiladi.

Hayotiy o'xshatma: oshpazning buyruq ro'yxati. "Yangi taom boshla", "pishir", "sufraga qo'y", "ingredient qo'sh" — har bir buyruq aniq bir ish qiladi. Hammasini biladigan oshpaz tez va aniq ishlaydi.


dotnet new — yangi loyiha yaratish

dotnet new console          # konsol ilova
dotnet new webapi           # ASP.NET Core Web API
dotnet new mvc              # ASP.NET Core MVC
dotnet new classlib         # kutubxona (Class Library)
dotnet new xunit            # test loyihasi

Nomi bilan yaratish:

dotnet new webapi -n MenimApi

-n — loyiha nomi. Bu nom .csproj fayli va asosiy namespace uchun ishlatiladi.

Papka ko'rsatish:

dotnet new webapi -n MenimApi -o ./backend

-o — qaysi papkaga yaratish. Papka yo'q bo'lsa avtomatik yaratiladi.

Mavjud shablonlar ro'yxatini ko'rish:

dotnet new list

dotnet build — kompilatsiya

dotnet build

Kodni tekshiradi va kompilatsiya qiladi — lekin ishga tushirmaydi. bin/ papkada natija paydo bo'ladi.

Qachon kerak? Faqat xatolar bormi yo'qmi tekshirishda. Ishga tushirmasdan oldin kodni "sinash".

dotnet build
# Build succeeded.
# 0 Warning(s)
# 0 Error(s)

Xato bo'lsa — qaysi fayl, qaysi qator ekani ko'rsatadi:

# error CS1002: ; expected [MenimLoyiha.csproj]
# Program.cs(5,20)

dotnet run — kompilatsiya + ishga tushirish

dotnet run

Eng ko'p ishlatiladigan buyruq. build + ishga tushirishni birga qiladi. Har safar o'zgarish bor-yo'qligini tekshiradi, o'zgarish bo'lsa qayta kompilatsiya qiladi.

Argument uzatish:

dotnet run -- --port 3000

-- dan keyin yozilgan narsalar dasturga argument sifatida uzatiladi.


dotnet watch — avtomatik qayta ishga tushirish

dotnet watch run

Fayllarda o'zgarish bo'lganda avtomatik qayta ishga tushiradi. API yozayotganda juda qulay — har safar terminalga qaytib dotnet run yozish kerak emas.

watch : Started
# ... dastur ishlayapti ...
# Siz Program.cs ni o'zgartirdingiz
watch : File changed: Program.cs
watch : Restarted

💡 ASP.NET Core API yozganda dotnet run o'rniga dotnet watch run ishlating — vaqt tejaydi.


dotnet add package — NuGet paketi qo'shish

NuGet — .NET ning paket kutubxonasi. npm ga o'xshash, lekin .NET uchun. 300,000+ tayyor kutubxona.

dotnet add package Newtonsoft.Json

Bu buyruq:

  1. NuGet dan paketni topadi
  2. Yuklab oladi
  3. .csproj ga qo'shadi

Versiya ko'rsatish:

dotnet add package Microsoft.EntityFrameworkCore --version 8.0.0

Versiya ko'rsatmasangiz — eng yangi stable versiya o'rnatiladi.

.csproj ga avtomatik qo'shiladi:

<ItemGroup>
  <PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
</ItemGroup>

dotnet restore — paketlarni tiklash

dotnet restore

.csproj da yozilgan barcha paketlarni NuGet dan yuklab oladi.

Qachon kerak?

GitHub dan loyiha yuklab olganda. node_modules singari, packages papkasi Git ga qo'shilmaydi. Shuning uchun klonlangandan keyin dotnet restore kerak.

Hamkasbingiz yangi paket qo'shganda. U dotnet add package qildi, .csproj yangilandi, siz git pull qildingiz — lekin paket sizda yo'q. dotnet restore yuklab oladi.

💡 dotnet run avtomatik restore ham qiladi. Lekin ba'zan alohida ishlatishga to'g'ri keladi.


dotnet publish — deploy uchun tayyorlash

dotnet publish -c Release -o ./publish

Dasturni production uchun tayyorlaydi. Debug ma'lumotlarsiz, optimallashtirilgan holda ./publish papkaga chiqaradi.

-c Release — Release konfiguratsiyasi (Debug emas). Release tezroq ishlaydi, hajmi kichikroq.


Qisqacha jadval

Buyruq Nima qiladi
dotnet new webapi -n Nom Yangi Web API loyiha
dotnet build Faqat kompilatsiya
dotnet run Kompilatsiya + ishga tushirish
dotnet watch run Avtomatik qayta ishga tushirish
dotnet add package Nom NuGet paketi qo'shish
dotnet restore Paketlarni tiklash
dotnet publish -c Release Deploy uchun tayyorlash

Tez-tez uchraydigan xatolar

dotnet run — paketlar topilmadi:

error NU1301: Unable to load the service index for source

Internet ulanishi yo'q yoki NuGet manzili noto'g'ri. Tekshiring: dotnet restore alohida ishga tushiring.

Noto'g'ri papkada buyruq:

Couldn't find a project to run.

dotnet run buyrug'i .csproj fayli bor papkada ishlatiladi. cd loyiha-papka qiling va qayta urining.

Paket versiyasi mos kelmasa:

error NU1107: Version conflict detected for Microsoft.Extensions.Logging

Ikki paket bir xil kutubxonaning turli versiyasini talab qilyapti. Yechim: .csproj da versiyalarni tekshiring yoki dotnet add package bilan aniq versiya ko'rsating.


Xulosa

dotnet new — yangi loyiha. dotnet build — faqat kompilatsiya. dotnet run — kompilatsiya va ishga tushirish. dotnet watch run — o'zgarishda avtomatik qayta ishga tushirish.

dotnet add package — NuGet dan kutubxona qo'shish. dotnet restore — GitHub dan klonlangandan keyin paketlarni tiklash.

Bu buyruqlarni kundalik ishda doimiy ishlatasiz.


Keyingi dars

5-dars: O'zgaruvchilar va ma'lumot turlari — int, string, bool, double, var