Episode 3 adalah praktik pertama: membuat project dengan dotnet new, memahami struktur Program.cs dan csproj, lalu menjalankan, membuild, dan mem-publish aplikasi console. Kalian akan merasakan alur kerja .NET dari awal hingga artifact produksi.

Di episode 2 kalian memahami arsitektur .NET. Sekarang waktunya praktik: membuat aplikasi .NET pertama kalian. Episode 3 memandu kalian dari nol — membuat project dengan dotnet new, membedah struktur folder yang dihasilkan, lalu menjalankan, membuild, dan mem-publish aplikasi console.
Alur kerja yang kalian pelajari di sini adalah fondasi untuk semua episode berikutnya. Baik web API, worker service, maupun aplikasi desktop — semuanya lahir dari template yang sama dan memakai perintah CLI yang sama. Kuasai alur ini dan sisanya menjadi varian kecil.
SDK .NET sudah membawa banyak template bawaan. Lihat daftarnya untuk memastikan template console tersedia:
dotnet new listdotnet new list menampilkan semua template yang terpasang, misalnya console, classlib, webapi, mvc, worker, dan maui. Output akan menampilkan kolom Short Name, Language, dan Tags — gunakan short name saat membuat project.
Buat project pertama:
dotnet new console -n HelloDotnet -o src/HelloDotnetdotnet new console -n HelloDotnet -o src/HelloDotnet menciptakan project bernama HelloDotnet di folder src/HelloDotnet. Opsi -n menentukan nama project (dan namespace), sedangkan -o menentukan lokasi output. File kode utama yang dihasilkan adalah Program.cs.
Buka Program.cs — isinya kira-kira sebagai berikut:
Console.WriteLine("Hello, World!");.NET 6 ke atas memakai top-level statements, sehingga tidak perlu menulis class dan method Main secara eksplisit — compiler yang membungkusnya. Baris Console.WriteLine("Hello, World!") mencetak teks ke standard output, dan baris itulah titik masuk aplikasi kalian.
File pendamping yang penting adalah HelloDotnet.csproj:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net8.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
</Project><TargetFramework>net8.0</TargetFramework> menentukan versi runtime target. ImplicitUsings otomatis menambahkan using umum, dan Nullable mengaktifkan analisis nullable reference types. Folder obj dan bin berisi artifact build sementara — keduanya tidak perlu di-commit ke Git.
Jalankan aplikasi dari root project:
dotnet rundotnet run melakukan restore, build, lalu menjalankan aplikasi. Output Hello, World! akan tampil. Perintah ini adalah cara tercepat untuk menguji perubahan kecil. Untuk pengembangan yang menunggu perubahan file secara otomatis, gunakan hot reload:
dotnet watch rundotnet watch run memantau perubahan sumber lalu merestart aplikasi secara otomatis — alur kerja yang sangat membantu saat mengembangkan web API di episode 11.
Sebelum commit, biasakan membuild secara eksplisit untuk memastikan kode bebas error:
dotnet build --configuration Releasedotnet build --configuration Release mengkompilasi project ke mode Release dan menghasilkan assembly di bin/Release/net8.0/. Artifact yang dihasilkan masih membutuhkan .NET runtime terpasang di mesin target.
Untuk distribusi, gunakan publish. Mode self-contained membawa runtime .NET sendiri sehingga target tidak perlu install .NET:
dotnet publish -c Release -r linux-x64 --self-contained truedotnet publish menghasilkan folder bin/Release/net8.0/linux-x64/publish/ yang berisi aplikasi lengkap plus runtime. Folder itulah yang akan dijadikan image Docker di episode 19.
Tip
Framework-dependent (tanpa -r) menghasilkan artifact kecil tetapi butuh runtime di target. Self-contained lebih besar namun mandiri. Pilih berdasarkan lingkungan deployment kalian.
Ringkasan perintah yang akan kalian pakai setiap hari:
dotnet new untuk membuat project dari template.dotnet run untuk menjalankan saat pengembangan.dotnet watch run untuk hot reload.dotnet build untuk memverifikasi kompilasi.dotnet publish untuk menghasilkan artifact produksi.dotnet test untuk menjalankan unit test (episode 18).Inti yang harus dibawa pulang:
dotnet new console -n Nama -o Path menciptakan project baru.dotnet run menjalankan aplikasi; dotnet watch run menambahkan hot reload.dotnet build memverifikasi kompilasi; dotnet publish menghasilkan artifact.Di episode 4 selanjutnya kita akan membahas bahasa dasar dan tipe data — tipe primitif, value dan reference types, nullable, string, struct dan enum, control flow, serta fungsi dan lambda expression dalam C#. Ini adalah inti dari menulis logika aplikasi .NET.