Kode sumber C# tidak dieksekusi langsung oleh komputer. Compiler mengubah kode menjadi instruksi antara, lalu .NET runtime mengeksekusinya. Bab ini memandu tiga cara menjalankan program — dotnet run, build terpisah, dan dotnet publish — sekaligus menjelaskan proses yang terjadi di balik layar.

Dari Kode Sumber ke Program Berjalan #

Compiler Roslyn menerjemahkan file .cs menjadi IL (Intermediate Language) di dalam assembly .dll. Saat program berjalan, .NET runtime membaca IL tersebut; JIT (Just-In-Time) compiler mengubahnya menjadi instruksi mesin per method tepat sebelum method dieksekusi. Proses yang sama berlaku untuk ketiga cara menjalankan program di bawah.

Cara 1: dotnet run #

Tambahkan satu baris ke Program.cs pada project HaloApp:

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

Perintah dotnet run menggabungkan build dan eksekusi dalam satu langkah, sehingga paling praktis selama pengembangan:

bash
dotnet run

Output yang Dihasilkan:

text
Halo, Budi! Selamat belajar C#.
Versi .NET SDK yang dipakai: 9.0.21

Cara 2: Build Terpisah, Eksekusi Manual #

Untuk memisahkan tahap build dari tahap eksekusi:

bash
dotnet build

Output yang Dihasilkan:

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

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

Time Elapsed 00:00:00.71

Assembly HaloApp.dll kini siap dieksekusi tanpa kompilasi ulang:

bash
dotnet bin/Debug/net9.0/HaloApp.dll

Output yang Dihasilkan:

text
Halo, Budi! Selamat belajar C#.
Versi .NET SDK yang dipakai: 9.0.21

Pemisahan ini menjawab kebutuhan CI (continuous integration): pipeline melakukan build satu kali, lalu hasilnya dieksekusi berkali-kali tanpa kompilasi ulang.

Cara 3: Publish untuk Distribusi #

Perintah dotnet publish menghasilkan folder yang siap disalin ke komputer lain:

bash
dotnet publish -o publish-demo

Output yang Dihasilkan:

text
  Determining projects to restore...
  All projects are up-to-date for restore.
  HaloApp -> ~/HaloApp/bin/Release/net9.0/HaloApp.dll
  HaloApp -> ~/HaloApp/publish-demo/

Isi folder publish-demo/:

text
HaloApp
HaloApp.deps.json
HaloApp.dll
HaloApp.pdb
HaloApp.runtimeconfig.json

Seluruh file di folder tersebut tinggal disalin ke komputer target. Syaratnya satu: komputer target memasang .NET Runtime 9.0, karena build ini bersifat framework-dependent.

Meneruskan Argumen Lewat Terminal #

Program di awal bab membaca array args. Argumen diteruskan setelah pemisah --:

bash
dotnet run -- Siti

Output yang Dihasilkan:

text
Halo, Siti! Selamat belajar C#.
Versi .NET SDK yang dipakai: 9.0.21

Tanpa pemisah --, argumen dapat tertukar dengan opsi milik dotnet run sendiri. Aturannya sederhana: seluruh teks setelah -- diperlakukan sebagai argumen program kita.