
Foto oleh RealToughCandy.com via Pexels
Memulai project C# baru bisa dilakukan melalui Visual Studio dengan antarmuka grafis, atau melalui .NET CLI (Command Line Interface) yang lebih ringan dan cocok dipakai lintas platform termasuk di Linux dan macOS, tanpa harus menginstal Visual Studio penuh.
.NET CLI menyediakan berbagai template project siap pakai, mulai dari console application sederhana, class library, hingga web API lengkap dengan struktur folder standar, semuanya bisa dibuat hanya dengan satu baris perintah dotnet new.
Artikel ini membahas cara membuat project baru dengan dotnet CLI, memahami struktur file yang dihasilkan, serta cara menjalankan dan membangun (build) project tersebut dari terminal.
Membuat Project Console dengan dotnet CLI
Membuat dan menjalankan project console sederhana
Memahami Isi File .csproj
File .csproj mendefinisikan konfigurasi project
Template Project Lain yang Tersedia
Berbagai template siap pakai untuk kebutuhan berbeda
Menambahkan Project ke dalam Solution
Solution mengelompokkan beberapa project sekaligus
Selain template bawaan, komunitas .NET juga menyediakan banyak template pihak ketiga yang bisa dipasang lewat dotnet new install, misalnya template untuk Clean Architecture atau microservices siap pakai, yang bisa menghemat waktu setup struktur project untuk kebutuhan yang lebih spesifik dibanding template standar bawaan SDK.
Memahami Struktur File .csproj pada Project C#
Contoh isi file .csproj hasil dotnet new console
Setiap kali project baru dibuat melalui perintah dotnet new console atau melalui wizard di Visual Studio, dotnet CLI akan menghasilkan sebuah file berekstensi .csproj yang berformat XML dan berfungsi sebagai definisi build untuk project tersebut. File ini menyimpan informasi penting seperti TargetFramework yang menentukan versi .NET yang menjadi target kompilasi, OutputType yang menentukan apakah hasil build berupa executable (Exe) atau library (Library), serta daftar PackageReference untuk NuGet package yang digunakan.
Properti ImplicitUsings ketika diset ke enable akan membuat compiler otomatis menyertakan using statement umum seperti System dan System.Collections.Generic tanpa perlu dituliskan manual di setiap file, sedangkan properti Nullable mengaktifkan nullable reference types yang memberi peringatan compiler saat ada kemungkinan null reference exception pada tipe referensi. Kedua fitur ini pertama kali diperkenalkan pada format project SDK-style yang menggantikan format .csproj lama yang jauh lebih verbose pada .NET Framework.
Menambahkan package baru ke project tidak harus dilakukan dengan mengedit file .csproj secara manual; perintah dotnet add package NamaPackage akan otomatis menambahkan entry PackageReference yang sesuai beserta versi terbaru yang kompatibel. Memahami isi file .csproj penting ketika melakukan migrasi target framework, misalnya dari net6.0 ke net8.0, karena perubahan tersebut cukup dilakukan dengan mengubah satu baris TargetFramework tanpa mengubah kode sumber.
Mengelola Beberapa Project dalam Satu Solution (.sln)
Satu file .sln dapat menaungi beberapa file .csproj sekaligus
File solution berekstensi .sln berfungsi sebagai wadah yang menaungi beberapa project .csproj sekaligus, memungkinkan sebuah aplikasi dipecah menjadi beberapa project terpisah seperti layer API, layer Core berisi logika bisnis, dan project Tests untuk unit testing, yang masing-masing dapat dikompilasi secara independen namun tetap dibuka dan dikelola bersama dalam satu solution melalui Visual Studio maupun dotnet CLI. Perintah dotnet new sln akan membuat file solution kosong, lalu setiap project ditambahkan ke dalamnya satu per satu menggunakan dotnet sln add diikuti path menuju masing-masing file .csproj yang ingin disertakan.
Relasi antar project di dalam satu solution diatur melalui project reference, yaitu pernyataan bahwa satu project bergantung pada project lain, seperti MpmFinance.Api yang mereferensikan MpmFinance.Core agar dapat memakai class dan service yang didefinisikan di sana. Project reference berbeda dari package reference karena yang dihubungkan adalah source code project lain dalam solution yang sama, bukan package NuGet eksternal yang sudah terkompilasi.
Pemisahan project seperti ini mendukung penerapan arsitektur berlapis, karena project Core yang berisi domain model dan business logic dapat dijaga agar tidak memiliki dependency ke framework presentasi seperti ASP.NET Core, sehingga logika bisnis tersebut bisa dipakai ulang oleh berbagai jenis aplikasi, baik API web, aplikasi console, maupun background worker, tanpa perlu menduplikasi kode yang sama di setiap project. Pengaturan ini juga mempermudah proses build otomatis pada pipeline CI/CD karena setiap project dapat diuji dan dipublikasikan secara terpisah sesuai kebutuhan deployment masing-masing.
Menambahkan NuGet Package dan Mengelola Referensi Project
NuGet adalah package manager resmi untuk ekosistem .NET yang memungkinkan project mengambil pustaka pihak ketiga seperti Newtonsoft.Json atau Dapper tanpa harus menyalin file DLL secara manual ke dalam folder project. Penambahan package dilakukan melalui perintah dotnet add package pada terminal, dan hasilnya langsung tercatat sebagai elemen PackageReference di dalam file .csproj beserta nomor versinya, sehingga riwayat dependency project tetap terdokumentasi dengan rapi dan mudah dilacak kapan sebuah package pertama kali ditambahkan.
Setiap referensi yang tercatat di .csproj akan otomatis dipulihkan melalui proses restore saat project dibuka atau dibangun ulang, sehingga anggota tim lain cukup menjalankan dotnet restore untuk mendapatkan dependency yang sama persis tanpa perlu mengatur ulang satu per satu. Mengunci versi package secara eksplisit, bukan menggunakan simbol wildcard, juga membantu menghindari perilaku program yang berubah tanpa disengaja akibat update otomatis ke versi package yang membawa perubahan tidak kompatibel.
Kesalahan Umum yang Sering Terjadi
Menjalankan dotnet run di Folder yang Salah
Perintah dotnet run harus dijalankan dari dalam folder yang berisi file .csproj, bukan dari folder solution yang berisi banyak project, kecuali struktur project memang hanya memiliki satu csproj di root.
Tidak Menambahkan Project Baru ke Solution File
Project yang dibuat dengan dotnet new namun lupa ditambahkan ke solution dengan dotnet sln add tidak akan ikut terbuka atau terbangun saat solution dibuka di IDE seperti Visual Studio.
Mengabaikan Versi TargetFramework yang Berbeda Antar Project
Project yang saling mereferensikan namun menarget versi .NET yang berbeda (misalnya net6.0 dan net8.0) bisa menimbulkan masalah kompatibilitas yang membingungkan, terutama saat memakai package NuGet yang hanya mendukung versi tertentu.
Kapan Pendekatan Ini Tidak Cocok Dipakai
Membuat project dengan dotnet CLI lebih cepat dan ringan, cocok untuk developer yang terbiasa bekerja di terminal atau menggunakan editor ringan seperti VS Code, serta konsisten di semua sistem operasi.
Visual Studio memberikan pengalaman visual yang lebih kaya dengan wizard konfigurasi, debugging terintegrasi, dan designer untuk UI, namun ukurannya jauh lebih besar dan hanya tersedia penuh di Windows, meski versi Community-nya gratis untuk individu dan organisasi kecil.
Ringkasan
Membuat project C# baru bisa dilakukan dengan cepat melalui dotnet CLI menggunakan template yang sesuai kebutuhan, dari console sederhana hingga web API lengkap. Memahami struktur file .csproj dan konsep solution akan memudahkan pengelolaan project yang lebih kompleks dengan banyak komponen saling terkait di kemudian hari.
Seri Belajar C# Fundamental:
← Sebelumnya: Struktur Pemrograman C# (sudah ada)
→ Selanjutnya: Pengenalan Tipe Data Pada Bahasa Pemrograman C# (sudah ada)