dotnet CLI — new, build, run, add, restore
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 runo'rnigadotnet watch runishlating — 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:
- NuGet dan paketni topadi
- Yuklab oladi
.csprojga 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 runavtomatikrestoreham 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