Di balik tombol Run di editor, perintah dotnet CLI yang bekerja. CLI ini berjalan identik di Windows, macOS, dan Linux, sehingga keahlian yang kita bangun di sini berlaku di semua platform. Menguasai dotnet CLI juga membuat kita tidak terikat pada satu editor tertentu.

Perintah Inti #

PerintahFungsi
dotnet new console -o NamaProjectMembuat project console baru di folder NamaProject
dotnet buildMengompilasi project dan menulis hasilnya ke bin/
dotnet runBuild dan menjalankan project dalam satu langkah
dotnet run -- argumenMenjalankan project sambil meneruskan argumen ke program
dotnet publishMenghasilkan folder distribusi yang siap disalin

Cara Kerja di Balik Layar #

Driver dotnet membaca file .csproj untuk mengetahui target framework dan konfigurasi project. Perintah build kemudian didelegasikan ke MSBuild, mesin build .NET; MSBuild memanggil compiler Roslyn untuk mengubah file .cs menjadi assembly .dll berisi IL (Intermediate Language). Seluruh tahap ini berjalan sama persis ketika tombol Run di editor ditekan.

Membuat Project dengan dotnet new #

bash
dotnet new console -o HaloCli
cd HaloCli

Output yang Dihasilkan:

text
The template "Console App" was created successfully.

Processing post-creation actions...
Restoring ~/HaloCli/HaloCli.csproj:
  Determining projects to restore...
  Restored ~/HaloCli/HaloCli.csproj (in 65 ms).
Restore succeeded.

Opsi -o HaloCli menentukan folder tujuan; tanpa opsi tersebut, template dibuat langsung di folder kerja saat ini. Bagian Restoring ... Restore succeeded menunjukkan dotnet CLI langsung menjalankan restore dependensi setelah template dibuat.

Build dan Run #

bash
dotnet build

Output yang Dihasilkan:

text
  Determining projects to restore...
  All projects are up-to-date for restore.
  HaloCli -> ~/HaloCli/bin/Debug/net9.0/HaloCli.dll

Build succeeded.
    0 Warning(s)
    0 Error(s)

Time Elapsed 00:00:00.71

Baris HaloCli -> ~/HaloCli/bin/Debug/net9.0/HaloCli.dll menunjukkan lokasi assembly hasil kompilasi. Perintah dotnet run melakukan build yang sama lalu langsung mengeksekusi hasilnya:

bash
dotnet run

Output yang Dihasilkan:

text
Hello, World!

Meneruskan Argumen ke Program #

Program console membaca argumen lewat array args. Ubah Program.cs menjadi:

csharp
string nama = args.Length > 0 ? args[0] : "Budi";
Console.WriteLine($"Halo, {nama}! Selamat belajar C#.");

Pemisah -- memisahkan argumen untuk dotnet CLI dari argumen untuk program kita:

bash
dotnet run -- Siti

Output yang Dihasilkan:

text
Halo, Siti! Selamat belajar C#.

Kita bedah baris program di atas:

  1. args — array string berisi argumen yang diteruskan setelah --; args.Length menghitung jumlah argumen.
  2. args.Length > 0 ? args[0] : "Budi" — operator ternary mengambil argumen pertama bila tersedia, atau memakai nilai bawaan "Budi".
  3. $"Halo, {nama}! ..." — string interpolation menyisipkan nilai nama ke dalam teks yang dicetak.

Publish untuk Distribusi #

bash
dotnet publish

Perintah ini menghasilkan folder berisi file yang siap disalin ke komputer lain. Lokasi output dan opsi runtime-nya dibahas lebih lanjut di bab Menjalankan Program.