CLI-ul dotnet: new, build, run

Subiect din roadmap-ul C# și .NET · parte din „Introducere în C# și .NET”

CLI-ul dotnet este instrumentul central pentru dezvoltarea în ecosistemul .NET, permițând gestionarea proiectelor, compilarea și rularea aplicațiilor direct din terminal. În mediul profesional, acest toolchain este esențial deoarece asigură portabilitatea codului între sistemele de operare (Windows, Linux, macOS) și se integrează perfect în pipeline-urile CI/CD. Stăpânirea acestor comenzi nu este doar o chestiune de confort, ci o necesitate pentru colaborarea eficientă în echipe și automatizarea proceselor de livrare software.

Concepte cheie

  • dotnet new: Generează structura inițială a unui proiect (fișiere .csproj, Program.cs) pe baza unui șablon specificat, economisind timp de configurare manuală.
  • dotnet build: Compilează codul sursă în binare intermediare (IL) și verifică erorile de sintaxă, generând un fișier .dll sau executabil fără a rula aplicația.
  • dotnet run: Execută o combinație implicită de build și run, compilând proiectul și lansându-l imediat în memorie pentru testare rapidă.
  • .csproj: Fișierul de proiect XML care definește dependențele, configurația de compilare și proprietățile specifice aplicației, fiind "sursa adevărului" pentru CLI.
  • Target Framework: Specifică versiunea .NET (ex: .NET 8, .NET Framework 4.8) pe care aplicația o va folosi, influențând bibliotecile disponibile.
  • Global Tools: Aplicații .NET care pot fi instalate global pe sistem și accesate ca orice altă comandă standard a sistemului de operare.
  • Cache-ul de pachete: CLI-ul stochează local pachetele NuGet descărcate pentru a accelera compilările viitoare și a reduce traficul de rețea.

Exemplu practic

Să presupunem că dorești să creezi o aplicație consolă simplă care afișează "Salut, lume!". Deschide terminalul și execută următoarele comenzi secvențial:

# 1. Creează un director nou și navighează în el
mkdir HelloApp && cd HelloApp

# 2. Inițializează un proiect de tip Console folosind .NET 8
dotnet new console --framework net8.0

# 3. Construiește proiectul (verifică erori)
dotnet build

# 4. Rulează aplicația
dotnet run

După rularea ultimei comenzi, vei vedea mesajul "Hello, World!" în terminal. Comanda dotnet build este crucială înainte de run în medii de producție pentru a detecta erorile de compilare înainte de execuție, deși dotnet run este ideal pentru iterări rapide în dezvoltare.

Greșeli frecvente

  • Ignorarea mesajelor de avertisment: Deși compilarea poate reuși, avertismentele (ex: variabile neutilizate) pot indica bug-uri potențiale sau cod murdar care trebuie curățat.
  • Confuzia dintre build și publish: build generează fișiere temporare în folderul bin/debug, iar publish creează un pachet optimizat și gata de distribuire, adesea cu dependințe incluse.
  • Versiuni incorecte ale framework-ului: Specificarea unui target framework mai recent decât SDK-ul instalat local va duce la erori de compilare; verifică versiunea cu dotnet --version.
  • Lipsa actualizării cache-ului: Uneori, după modificarea dependențelor în .csproj, este necesar dotnet restore explicit pentru a sincroniza pachetele NuGet.

Întrebări de interviu

1. Care este diferența dintre dotnet build și dotnet run? dotnet build compilează codul sursă în binare și returnează un cod de eroare/succes, dar nu execută aplicația. dotnet run compilează (dacă e nevoie) și apoi execută aplicația generată, afișând output-ul în terminal.

2. Ce face comanda dotnet restore? Aceasta descarcă și instalează dependențele definite în fișierul .csproj din sursele NuGet configurate, asigurându-se că toate pachetele externe necesare sunt disponibile local pentru compilare.

3. Cum poți specifica un anumit profil de configurare (ex: Release) la rulare? Folosind flag-ul -c sau --configuration, de exemplu: dotnet run -c Release, care va compila aplicația cu optimizări active.

Exercițiu

Creează o aplicație consolă numită Calculator care să accepte două numere întregi de la utilizator prin Console.ReadLine(). Aplicația trebuie să calculeze și să afișeze suma, diferența, produsul și împărțirea celor două numere. Folosește dotnet new console pentru inițializare, dotnet add package dacă ai nevoie de librării externe (deși nu sunt necesare aici) și testează rularea cu valori diverse, inclusiv împărțire la zero (gestionează excepția). Timp estimat: 45 minute.

Resurse gratuite

Alte subiecte din „Introducere în C# și .NET”