C# Dotnet di Linux

Saya pernah berpikir:

Sepertinya pemrograman .NET (dibaca “Dot net”) tidak mungkin bisa dilakukan di Linux. Karena .NET sendiri merupakan produk dari Microsoft.

Ternyata itu salah… (karena kurang piknik sih 😸)

Dunia sudah berubah.

Sejak CEO Microsoft Satya Nadella menyatakan:

“Microsoft Love Linux”

Beberapa produk Microsoft menjadi open source, termasuk juga .NET yang sudah di-open-sourcekan sejak tahun 2014.

Programmer Microsoft juga banyak yang berkontribusi di proyek-proyek open source.

Buktinya, Microsoft menjadi organisasi yang paling banyak berkontribusi di proyek open source (di Github), mengalahkan Facebook dan Google.

Perusahaan yang berkontribusi di proyek Open Source

(sumber: Github Octoverse 2016)

Saat tidak ada lagi persaingan, maka akan ada kolaborasi dan gotong royong untuk membangun ekosistem yang lebih baik.

Itulah semangat open source.

Pada kesempatan ini, kita akan belajar:

  • Pengenalan C# dan .NET
  • Bagaimana membuat program C# .NET di Linux?
  • Alat apa saja yang dibutuhkan untuk membuat program C# .NET di Linux?
  • Cara Kompilasi dan Eksekusi Program C# .NET di Linux.

Mari kita mulai…

Apa itu C# dan .NET?

C# (dibaca “C Sharp”) adalah bahasa pemrograman buatan Microsoft yang dirancang untuk berjalan di atas .NET.

.NET sendiri merupakan sebuah platform untuk membuat dan menjalankan program C#, F#, dan VB .NET.

Bahasa Pemrograman .NET

Di dalam .NET terdapat beberapa komponen seperti Framework Class Library (FCL), WinForms, CLR, dan sebagainya yang bisa kita manfaatkan untuk membuat program.

Komponen .NET

Program yang dibuat untuk .NET akan dieksekusi oleh sebuah mesin virtual bernama Common Language Runtime (CLR).

Eksekusi Program .NET

Jadi, bila komputermu belum terinstal .NET, maka tidak akan bisa menjalankan program yang dibuat dengan C#, F#, dan VB .NET.

Jika kamu pernah belajar Java, .NET bisa diibaratkan seperti JDK dan JRE yang bisa digunakan untuk membuat program Java dan menjalankannya.

.NET ada beberapa jenis:

Jenis-jenis .NET

Apa saja perbedaanya?

  1. .NET Framework merupakan platform untuk membuat aplikasi windows saja;
  2. .NET Core merupakan platform yang bisa digunakan di berbagai platfrom seperti Linux dan MacOS;
  3. XAMARIN adalah platform .NET yang khusus untuk mobile.

.NET yang manakah yang akan kita gunakan?

Tentu saja kita akan menggunakan yang .NET Core.

Peralatan yang Harus dipersiapkan

Ada beberapa alat yang harus kita persiapkan untuk melakukan pemrograman C# di Linux:

  1. Teks Editor (Visual Studio Code) untuk menulis kode program;
  2. Kompilator (.NET SDK) untuk kompilasi kode program.

Itu saja?

Ya benar, itu saja.

Sebenarnya ada alternatif lain, yaitu menggunakan Monodevelop. Namun, pada pada tulisan ini, saya akan menggunakan peralatan dari Microsoft saja. Biar resmi 😄.

1. Siapkan Teks Editor

Kenapa harus pakai VS Code, bisa tidak menggunakan teks editor yang lain?

Bisa saja sih…

Namun, Saya merekomendasikan VS Code karena di sana ada ekstensi yang bisa kita gunakan untuk debugging program C#.

Silahkan install VS Code. Baca cara instalnya di sini: [Review] Teks Editor Visual Code Studio di Linux

Setelah itu, install ekstensi C#.

Ekstensi C# untuk VS Code

Ekstensi ini semacam plug-in yang akan kita gunakan untuk men-debug program.

2. Instalasi .NET SDK di Linux

Berbeda distro beda juga cara instalnya. Saya akan menginstal .NET di distro Linux Mint 18.2 64-bit.

Untuk distro lain, silahkan lihat di sini.

Pertama kita harus menambahkan repository .NET:

curl https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > microsoft.gpg
sudo mv microsoft.gpg /etc/apt/trusted.gpg.d/microsoft.gpg
sudo sh -c 'echo "deb [arch=amd64] https://packages.microsoft.com/repos/microsoft-ubuntu-xenial-prod xenial main" > /etc/apt/sources.list.d/dotnetdev.list'

Lalu, baru kita bisa install .NET dengan perintah:

sudo apt-get update
sudo apt-get install dotnet-sdk-2.0.2

Setelah itu, untuk memastikan .NET sudah terinstal dengan benar, coba ketik perintah dotnet --version.

Versi Dotnet

Membuat Project Baru

Silahkan buka terminal, lalu ketik perintah berikut untuk membuat project C# .NET:

dotnet new console -o HelloApp

Keterangan:

  • console adalah jenis aplikasi yang akan kita buat.
  • HelloApp adalah nama project aplikasinya.

Selain aplikasi console ada juga jenis aplikasi yang lain seperti ASP untuk aplikasi Web.

Bisa kita lihat dengan dotnet new --help.

Daftar Tipe aplikasi Dotnet

Setelah kita membuat project, sekarang kita buka dengan teks editor.

Ketik perintah berikut:

code HelloApp
Membuat Proyek dotnet di Linux

Kemudian akan terbuka seperti ini:

Proyek dotnet di Linux

Jika muncul pesan Warning seperti diatas, klik saja “Yes”.

Kita bisa mulai menulis programnya pada file Program.cs.

Menjalankan Program

Untuk menjalankan program, kita harus lakukan melalui terminal. Karena programnya adalah program console.

Tapi tenang saja, kita juga bisa menjalankan melalui VS Code.

Ketik perintah berikut untuk menjalankannya:

dotnet run --project HelloApp

Atau jika kamu berada di direktori HelloApp langsung saja ketik dotnet run.

Menjalankan Aplikasi Dotnet

Keren…

Kita sudah berhasil membuat program Hello World dengan C# di Linux.

Selanjutnya, kita akan coba menjalankan dari VS Code.

Silahkan masuk ke Debug, lalu klik Run.

Debug aplikasi .NET di VS Code

Ini hanya untuk debugging saja.

Lalu, bagaimana kalau aplikasi console-nya sudah jadi?

Kita bisa melakukan build dengan perintah:

dotnet publish
Publikasi Aplikasi

Maka akan tercipta file binary baru di HelloApp/bin/Debug/netcoreapp2.0/publish/ bernama HelloApp.dll.

Aplikasi yang sudah Jadi

Kenapa output-nya berupa HelloApp.dll, bukan HelloApp.exe?

Karena file ini akan dieksekusi oleh .NET runtime.

Eksekusi Aplikasi yang sudah Jadi

Publikasi Aplikasi ke Platform Tertentu

Apabila kita ingin publikasi aplikasi ke platform tertentu, misalnya Windows 7 64-bit. Maka kita harus menambahkan RID (Runtime Identifier) pada file HelloApp.csproj.

Menambahkan RID

Untuk mengetahui nama-nama RID, bisa dilihat di .NET Core RID Catalog.

Contoh di atas, saya menambahkan platform win7-x64 dan ubuntu-x64.

Setelah menambahkan RID, barulah kita bisa kompilasi atau publish aplikasinya ke platform tersebut.

Perintahnya seperti ini:

dotnet publish --runtime win7-x64

Kita harus menambahkan argumen --runtime dan nama RID-nya. Ini artinya, kita akan mempublikasikan aplikasi beserta .NET Runtime-nya.

Kompilasi Program dengan Runtime

Proses publikasi membutuhkan koneksi internet untuk mengambil beberapa paket. Sehingga hasilnya akan seperti ini:

Hasil publikasi Aplikasi dengan Runtimenya

Banyak sekali file .dll, ini semua adalah library .NET yang dibutuhkan oleh aplikasi agar bisa dieksekusi (publish sekaligus dengan .NET).

Semua file tersebut dapat kita taruh di dalam C:\Program Files\HelloApp. Atau biar mudah, dibuatkan wizard installer-nya.

Jadi Kesimpulannya…

Jadi pemrograman C# .NET di Linux bisa dilakukan.

Tapi untuk pemrograman GUI menggunakan WinForm, belum bisa dilakukan. Karena di dalam .NET Core library tersebut belum tersedia.

WinForm hanya ada di .NET Framwork dan sudah ada Visual Studio untuk membuat GUI-nya. Namun, .NET Framwork dan Visual Studio belum ada di Linux.

Kenapa tidak ada WinForm di .NET Core?

Karena .NET Core difokuskan untuk pengembangan aplikasi console yang berjalan di Server Cloud dan Web. Baca di: Issue 374.

Namun, bukan berarti kita tidak bisa membuat aplikasi GUI dengan C# di Linux. Kita masih bisa menggunakan library lain seperti GTK dan Qt.

Untuk sekedar belajar dasar dari bahasa C#, kita masih bisa menggunakan .NET Core…

…atau mungkin menggunakan MonoDevelop.

📖 Referensi dan Bacaan Menarik: