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:
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:
dotnet runOutput yang Dihasilkan:
Halo, Budi! Selamat belajar C#.
Versi .NET SDK yang dipakai: 9.0.21Cara 2: Build Terpisah, Eksekusi Manual #
Untuk memisahkan tahap build dari tahap eksekusi:
dotnet buildOutput yang Dihasilkan:
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.71Assembly HaloApp.dll kini siap dieksekusi tanpa kompilasi ulang:
dotnet bin/Debug/net9.0/HaloApp.dllOutput yang Dihasilkan:
Halo, Budi! Selamat belajar C#.
Versi .NET SDK yang dipakai: 9.0.21Pemisahan 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:
dotnet publish -o publish-demoOutput yang Dihasilkan:
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/:
HaloApp
HaloApp.deps.json
HaloApp.dll
HaloApp.pdb
HaloApp.runtimeconfig.jsonSeluruh 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 --:
dotnet run -- SitiOutput yang Dihasilkan:
Halo, Siti! Selamat belajar C#.
Versi .NET SDK yang dipakai: 9.0.21Tanpa pemisah --, argumen dapat tertukar dengan opsi milik dotnet run sendiri. Aturannya sederhana: seluruh teks setelah -- diperlakukan sebagai argumen program kita.