2-bo‘lim

Muhitni sozlash va birinchi loyiha

.NET SDK ni o'rnatish, muharrir tanlash, dotnet buyruqlari, loyiha tuzilmasi, csproj fayli va yashirin using'lar.

🕑 14 daqiqa o‘qish 📄 1 109 so‘z 👁 1 marta ko‘rilgan
Ushbu bo‘lim mundarijasi
  1. .NET SDK ni o'rnatish
  2. Muharrir tanlash
  3. Birinchi loyiha
  4. Loyiha tuzilmasi
  5. Program.cs
  6. Salom.csproj
  7. Yashirin using'lar
  8. Asosiy dotnet buyruqlari
  9. Dastur argumentlari
  10. Ko'p uchraydigan xatolar
  11. Xulosa

C# yozish uchun ikki narsa kerak: .NET SDK va matn muharriri. Ikkalasi ham bepul va barcha tizimlarda ishlaydi.

.NET SDK ni o'rnatish #

SDK - bu kompilyator, standart kutubxona va dotnet buyrug'i birgalikda.

TizimQanday
Windowsdotnet.microsoft.com/download dan o'rnatuvchini yuklang
macOSO'sha saytdan yoki brew install dotnet-sdk
Linux (Ubuntu, Debian)sudo apt install dotnet-sdk-10.0
Har qanday tizimRasmiy dotnet-install skripti
SDK va Runtime - bir narsa emas

Yuklash sahifasida ikki variant bo'ladi:

  • Runtime - tayyor dasturni ishga tushirish uchun. Kod yozib bo'lmaydi.
  • SDK - dastur yozish uchun. Ichida runtime ham bor.

Sizga SDK kerak. Ko'pchilik tasodifan Runtime'ni o'rnatib, keyin dotnet new buyrug'i ishlamasligidan hayron bo'ladi.

O'rnatgach tekshiring:

Terminal
dotnet --version

Versiya raqami chiqsa (masalan 10.0.401), hammasi joyida. Buyruq topilmasa, terminalni yopib qayta oching.

Muharrir tanlash #

MuharrirTizimIzoh
VS Code + C# Dev KitHammasiBepul, yengil - boshlash uchun eng yaxshi
Visual Studio CommunityWindowsBepul, juda kuchli, og'ir
RiderHammasiPullik, talabalar uchun bepul
Har qanday matn muharririHammasidotnet buyruqlari baribir ishlaydi
VS Code uchun kengaytma

VS Code o'rnatgandan keyin kengaytmalar bo'limidan C# Dev Kit ni o'rnating (nashriyot - Microsoft).

U avtomatik to'ldirish, xatolarni jonli ko'rsatish, nosozliklarni qidirish va dotnet buyruqlarini menyudan ishlatish imkonini beradi. Usiz ham yozish mumkin, lekin u bilan ancha qulay.

Birinchi loyiha #

Terminalni oching va uchta buyruqni bajaring:

Terminal
dotnet new console -o Salom
cd Salom
dotnet run

Ekranda Hello, World! chiqadi.

Nima bo'ldi:

  1. dotnet new console - Salom papkasida yangi konsol loyihasi yaratdi;
  2. cd Salom - o'sha papkaga kirdi;
  3. dotnet run - kodni kompilyatsiya qilib, ishga tushirdi.

Loyiha tuzilmasi #

Yaratilgan papkada shular bor:

Natija
Salom/
   Program.cs      <- kodingiz shu yerda
   Salom.csproj    <- loyiha sozlamalari
   obj/            <- vaqtinchalik fayllar
   bin/            <- tayyor dastur (qurilgandan keyin)

obj va bin papkalari avtomatik yaratiladi. Ularni Git'ga qo'shmang va qo'lda tahrirlamang - o'chirib yuborsangiz, keyingi qurishda qaytadan paydo bo'ladi.

Program.cs #

Yangi loyihada u bitta qatordan iborat:

CSHARP
Console.WriteLine("Hello, World!");
Natija
Hello, World!

Salom.csproj #

Bu loyihaning pasporti. XML ko'rinishida yoziladi:

XML
<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>net10.0</TargetFramework>
    <ImplicitUsings>enable</ImplicitUsings>
    <Nullable>enable</Nullable>
  </PropertyGroup>

</Project>
SozlamaMa'nosi
OutputTypeExe - ishga tushadigan dastur (Library - kutubxona)
TargetFrameworkQaysi .NET versiyasi uchun: net10.0
ImplicitUsingsKo'p ishlatiladigan using larni avtomatik qo'shadi
Nullablenull xavfsizligi tekshiruvini yoqadi (12-bo'lim)

Yashirin using'lar #

ImplicitUsings yoqilgani uchun Program.cs boshida using System; yozish shart emas. Kompilyator eng kerakli fazolarni o'zi qo'shadi.

Shu sababli quyidagi kod hech qanday using siz ishlaydi:

CSHARP
List<string> shaharlar = ["Namangan", "Andijon", "Samarqand"];

int uzunlar = shaharlar.Count(s => s.Length > 7);

Console.WriteLine($"Jami: {shaharlar.Count}, uzun nomlilar: {uzunlar}");
Console.WriteLine(string.Join(" | ", shaharlar.Order()));
Natija
Jami: 3, uzun nomlilar: 2
Andijon | Namangan | Samarqand

Bu yerda List<T> (System.Collections.Generic), Count va Order (System.Linq) hamda Console (System) ishlatildi - hech biri uchun using yozilmadi.

To'rtta xususiyat bir misolda

Bu qisqa misolda zamonaviy C# ning to'rt belgisi bor:

  • [...] to'plam ifodasi (C# 12) - new List<string> { ... } o'rniga qisqa yozuv;
  • lambda s => s.Length > 7 - 16-bo'limda batafsil;
  • LINQ metodlari Count va Order - 15-bo'limda;
  • satr interpolatsiyasi $"..." - keyingi bo'limda.

Hozircha ularni tushunish shart emas. Muhimi shu: bu qatorlar hech qanday using talab qilmadi.

Yashirin using lar ro'yxatiga kirmagan fazolar uchun esa yozish kerak. Masalan System.Text:

CSHARP
using System.Text;

StringBuilder matn = new();
matn.Append("Salom");
matn.Append(", ");
matn.Append("dunyo!");

Console.WriteLine(matn.ToString());
Console.WriteLine($"Uzunligi: {matn.Length}");
Natija
Salom, dunyo!
Uzunligi: 13

Asosiy dotnet buyruqlari #

BuyruqNima qiladi
dotnet new console -o NomYangi konsol loyihasi
dotnet new listMavjud shablonlar ro'yxati
dotnet runKompilyatsiya qilib, ishga tushiradi
dotnet buildFaqat kompilyatsiya qiladi
dotnet cleanbin va obj ni tozalaydi
dotnet publish -c ReleaseTarqatishga tayyor variant
dotnet add package NomNuGet paketini qo'shadi
dotnet --infoO'rnatilgan SDK va runtime'lar
Debug va Release

Sukut bo'yicha dotnet run Debug rejimida quradi: kod optimallashtirilmaydi, lekin nosozliklarni qidirish qulay.

Tayyor dastur uchun Release kerak:

Terminal
dotnet run -c Release

Release rejimida kompilyator optimallashtirish qiladi va dastur sezilarli tezroq ishlaydi. Tezlikni o'lchayotganda har doim Release'da o'lchang - aks holda natija ma'nosiz bo'ladi.

Dastur argumentlari #

Yuqori darajali ko'rsatmalarda args o'zgaruvchisi tayyor turadi:

CSHARP
if (args.Length == 0)
{
    Console.WriteLine("Argument berilmadi");
}
else
{
    Console.WriteLine($"Argumentlar soni: {args.Length}");
    foreach (string arg in args)
    {
        Console.WriteLine($"  - {arg}");
    }
}
Natija
Argument berilmadi

Yuqoridagi natija dotnet run ni argumentsiz ishga tushirganda chiqadi. Argument bersangiz:

Terminal
dotnet run -- Husanboy Namangan

Endi chiqish shunday bo'ladi:

Natija
Argumentlar soni: 2
  - Husanboy
  - Namangan

Ikkita chiziqcha (--) muhim: usiz dotnet so'zlarni o'ziga tegishli deb o'ylaydi.

args ni o'zingiz e'lon qilmang

Sinab ko'rish uchun string[] args = ["Husanboy"]; deb yozgingiz kelishi mumkin. Bu kompilyatsiya xatosi beradi:

Natija
error CS0136: A local or parameter named 'args' cannot be declared
in this scope because that name is used in an enclosing local scope

Sababi: yuqori darajali ko'rsatmalarda kompilyator Main(string[] args) ni o'zi yozadi, ya'ni args allaqachon mavjud. Uni qaytadan e'lon qilib bo'lmaydi - shunchaki ishlatavering.

Sinov uchun boshqa nom tanlang, masalan sinovArgs.

Ko'p uchraydigan xatolar #

XatoSababiYechim
dotnet: command not foundSDK o'rnatilmagan yoki PATH da yo'qTerminalni qayta oching
No project file foundLoyiha papkasida emassizcd bilan kiring
error CS0103: The name ... does not existNom xato yozilgan yoki using yetishmayaptiImloni va using ni tekshiring
error CS5001: Program does not contain a static 'Main'OutputType Exe, lekin kirish nuqtasi yo'qProgram.cs bo'sh qolmasin
Ikkita Main haqida xatoPapkada ikkita Program.cs borHar bir loyiha alohida papkada bo'lsin
Bitta papkada bitta loyiha

Yangi boshlovchilar ko'pincha bitta papkada bir nechta misol fayl yaratadi va kutilmagan xatoga duch keladi: CS0017 - "birdan ortiq kirish nuqtasi".

Sababi: dotnet papkadagi barcha .cs fayllarni bitta loyiha deb qaraydi. Ikkita faylda Main bo'lsa yoki ikkitasida yuqori darajali ko'rsatmalar bo'lsa - qaysi biri boshlanishini bilmaydi.

Har bir mashq uchun alohida papka oching. Bu darslikdagi misollarni sinash uchun bitta loyiha yetarli - Program.cs ichidagi kodni almashtirib turing.

Amaliy topshiriq
  1. .NET SDK ni o'rnating va dotnet --version bilan tekshiring.
  2. SDK va Runtime farqini o'z so'zingiz bilan yozing.
  3. VS Code va C# Dev Kit kengaytmasini o'rnating.
  4. dotnet new console -o Mashq bilan loyiha yarating.
  5. Program.cs va .csproj fayllarini ochib o'qing.
  6. dotnet run bilan ishga tushiring.
  7. Program.cs ichidagi matnni o'zgartirib, qaytadan ishga tushiring.
  8. dotnet build dan keyin bin papkasida nima paydo bo'lganini ko'ring.
  9. dotnet run -- salom dunyo bilan argument uzating va chiqishini kuzating.
  10. dotnet new list bilan qanday shablonlar borligini ko'ring.

Xulosa #

  • Yozish uchun SDK kerak, Runtime emas.
  • Loyiha dotnet new console -o Nom bilan yaratiladi, dotnet run bilan ishga tushadi.
  • Program.cs - kodingiz, .csproj - loyiha sozlamalari, bin va obj - avtomatik papkalar.
  • ImplicitUsings ko'p ishlatiladigan using larni avtomatik qo'shadi; qolganini qo'lda yozasiz.
  • Tezlikni o'lchash yoki tarqatish uchun -c Release ishlating.
  • Argumentlar dotnet run -- arg1 arg2 ko'rinishida uzatiladi.
  • Bitta papkada bitta loyiha - aks holda "birdan ortiq kirish nuqtasi" xatosi chiqadi.

Keyingi bo'limda turlar va o'zgaruvchilarni o'rganamiz.

Xatolik topdingizmi?

Imlo xatosi, ishlamaydigan kod yoki noto‘g‘ri ma‘lumotni ko‘rsangiz - bizga xabar bering. Har bir xabar administrator tomonidan ko‘rib chiqiladi.