Apakah pengetahuan tentang C # ada gunanya dalam sistem Linux?

44

Saya tahu C # dan saya suka berganti-ganti sistem dan menggunakan Linux. Bisakah saya menggunakan C # untuk membangun aplikasi yang akan berfungsi secara asli di Linux? Apa yang harus saya lakukan untuk menggunakan pengetahuan saya tentang C # di sistem Linux?

Perhatikan bahwa saya berspesialisasi dalam Unity3D, tetapi saya masih ingin membuat aplikasi Linux menggunakan C #.

Yakub
sumber
1
KerbalSpaceProgram ditulis dalam Unity dan berjalan di Win / Mac / Linux. Plugin / Mods ke KSP ditulis dalam C # dan dapat dikembangkan pada Win, Mac atau Linux. Saya menggunakan Mac sekarang, bukan Linux untuk $ ALASAN, tapi saya melakukan pengembangan mod KSP pada platform itu di C # dan bukan windows. Saya mungkin akan menulis beberapa kode C # yang berdiri sendiri dengan tes xUnit di luar KSP segera dan itu akan sama seperti pengembangan lainnya, tapi saya harus menjalankannya di bawah mono. MechJeb memiliki contoh Makefile yang dibuat di Mac + Linux: github.com/MuMech/MechJeb2/blob/master/Makefile (membutuhkan tautan permainan KSP dll untuk ditautkan).
lamont
3
Aplikasi C # biasanya tidak berjalan secara native di mana saja.
Stop Harming Monica
@OrangeDog Saya tahu, bahkan pada Windows Anda perlu menginstal .Net framework. Jika saya mengatakan "asli" yang saya maksud tanpa lapisan emulasi atau kompatibilitas. Pada dasarnya saya maksudkan jika Linux mendukungnya tidak peduli berapa banyak program atau paket yang perlu Anda instal.
Jacob
2
Apa relevansi semua ini dengan Ubuntu?
underscore_d
2
@underscore_d Saya tidak tahu dari mana Anda mendengarnya, tetapi itu tidak benar. Lihat Apakah “tidak hanya khusus untuk Ubuntu” pada topik? Banyak, banyak pertanyaan tentang Tanyakan Ubuntu berlaku sama untuk sebagian besar sistem GNU / Linux. Mungkin seseorang akan menemukan alasan yang masuk akal untuk mempertimbangkan pertanyaan ini di luar topik, tetapi jika demikian, itu tidak akan terjadi. (Btw, ini memang memiliki jawaban dengan informasi spesifik Ubuntu. Paragraf kedua dari posting saya sendiri adalah tentang paket-paket Ubuntu; ia membawa ke beberapa, tetapi tidak semua, distro lain.)
Eliah Kagan

Jawaban:

55

Kemungkinan besar Anda akan menemukan http://www.mono-project.com/

Seperti yang dikatakan halaman About Mono :

Mono, platform pengembangan sumber terbuka berbasis pada .NET Framework, memungkinkan pengembang untuk membangun aplikasi lintas platform dengan peningkatan produktivitas pengembang. Implementasi Mono. NET didasarkan pada standar ECMA untuk C # dan Infrastruktur Bahasa Umum .

The platform yang didukung termasuk Linux.

Finn
sumber
2
Mono ... kedengarannya akrab ... Oh ya, inilah dasar dari kesatuan! Saya tidak tahu bahwa saya dapat menggunakannya secara terpisah. Saya pikir itu adalah bagian dari Unity3d.
Yakub
41
Versi terbaru dari implementasi Microsoft (.Net Core) juga mendukung Linux.
BlueRaja - Danny Pflughoeft
6
Mono mengimplementasikan .net standard 2.0 (iirc) bukan hanya inti.
Casey
13
Ini akan menjadi jawaban yang bagus beberapa tahun yang lalu. Sekarang sudah cukup usang.
Konrad Rudolph
2
Jika Anda menggunakan versi terbaru dari Ubuntu, tolong jangan gunakan mono, ia memiliki banyak bug dan implementasi yang buruk, gunakan .net core. Di mana saya bekerja, hampir setiap masalah yang kita miliki ketika menjalankan aplikasi C # pada distro linux lama dapat dijelaskan dengan pernyataan: "karena mono". Filter pengecualian kehilangan jejak tumpukan, implementasi async yang merupakan pembungkus Task.Run, memori bocor di seluruh pemotretan dan kurangnya dukungan valgrind sehingga Anda bahkan tidak dapat mendiagnosis kebocoran dengan benar.
Lukazoid
72

Ya, Anda dapat mengembangkan perangkat lunak di Ubuntu, yang dengan sendirinya akan berjalan di Ubuntu, di C #. Baik Mono dan .NET Core mendukung sistem GNU / Linux seperti Ubuntu. (Anda dapat menggunakannya di distro lain juga, seperti Debian, Raspbian, Fedora, CentOS, Arch, Gentoo, dan sebagainya.) Mesin game Unity3D juga mendukung Ubuntu, seperti yang mungkin Anda ketahui. Unity3D menanamkan Mono .

Sejumlah paket untuk Ubuntu, dapat diinstal dengan manajer paket Ubuntu dari sumber perangkat lunak yang didukung komunitas secara resmi, ditulis dalam C # dan menggunakan Mono. Ini termasuk pemutar musik Banshee , aplikasi Tomboy , editor grafis raster Pinta , dan pengelola kata sandi KeePass (sejak versi 2).

Sebagian besar editor teks, seperti Gedit, Vim, dan Emacs, memiliki penyorotan sintaks untuk C #. MonoDevelop dan Visual Studio Code adalah dua lingkungan pengembangan terintegrasi populer yang berjalan di Ubuntu dan mendukung pengembangan C #.

Eliah Kagan
sumber
10
Mungkin juga menyebutkan Rider, IDE berbasis ide intellij untuk C # yang berisi semua fungsionalitas ReSharper untuk Visual Studio.
Wilbert
Anda mungkin ingin menyempurnakan jawaban ini sehingga ini menyiratkan bahwa distribusi linux lain memang ada. Karena mereka juga akan menyediakan atau mendukung mono, Anda mungkin ingin menjadi sedikit lebih netral dan inklusif.
user2066657
@ user2066657 Terima kasih atas sarannya; Saya sudah mengedit. Saya bermaksud menjelaskan bagaimana Mono dan .NET Core tidak terbatas pada Ubuntu ("sistem GNU / Linux seperti Ubuntu"). Tetapi pada pertimbangan lebih lanjut, saya menyadari ini mungkin tidak jelas bagi pembaca yang belum tahu apa yang saya coba sampaikan kepada mereka. Jadi saya telah memperluas bagian itu. Saya menyadari bahwa pengeditan ini mungkin tidak memuaskan Anda: Saya telah membuatnya lebih inklusif, tetapi tidak lebih netral. Masuk akal untuk posting di situs ini untuk menekankan Ubuntu. Bagian tengah, memberikan contoh program C # dengan paket Ubuntu hilir, sengaja difokuskan pada Ubuntu.
Eliah Kagan
Jika OP ingin bertanya tentang OS non-Ubuntu, mereka mungkin akan bertanya di Unix & Linux .
Tn. Lister
@ Tuan Ya, setuju. Tetapi saya pikir sesuatu diperoleh, dan tidak ada yang hilang, dengan klarifikasi yang saya tambahkan. Saya tidak berencana untuk memperlengkapi kembali pos secara keseluruhan. Sebagai contoh, saya mempertimbangkan untuk mengatakan sesuatu tentang distro mana MonoDevelop dan Visual Studio Code yang cukup mudah untuk diinstal dan digunakan, tetapi memutuskan untuk tidak melakukannya, dengan alasan bahwa itu agak rumit dan akhirnya akan mengubah nada dan fokus (dan panjang! ) dari pos.
Eliah Kagan
20
  1. Anda sekarang dapat mengembangkan aplikasi server di Linux menggunakan C # ( .NET Core framework), seperti Anda dapat menggunakan Java atau Python. Yang saya maksud dengan aplikasi server adalah aplikasi web dan aplikasi layanan web (REST). Ini sangat cocok dengan wadah Linux ( Docker / K8s) dan cloud.
  2. Anda dapat mengembangkan aplikasi desktop dengan C # menggunakan Mono Framework (implementasi .NET) dan toolkit GTK # (GtkSharp) (pembungkus GTK). Ada banyak proyek yang dikembangkan di sana. Kerangka kerja ini telah memiliki beberapa perlawanan oleh bagian dari komunitas Linux di masa lalu. Beberapa distribusi dan pengguna tidak menginginkan aplikasi Mono.
  3. Anda dapat mengembangkan game dengan Mesin Persatuan menggunakan C # di Linux. Unity Editor masih eksperimental di Linux.

Jadi iya. Pengetahuan tentang C # dapat sangat berguna pada sistem Linux saat ini.

gorlok
sumber
4
Anda juga dapat melakukan aplikasi desktop di .NET Core.
PmanAce
Anda juga dapat menggunakan Avalonia, implementasi ulang lintas platform WPF untuk melakukan aplikasi seluler + desktop di Mac + Linux + Windows. Akhirnya toolkit UI non-sampah!
Chris Bordeman
2

Sekarang Anda bahkan dapat melakukan platform front end cross platform XAML (Linux, Mac, Windows, Android, iOS, UWP) menggunakan .Net Core dan proyek baru bernama Avalonia. Avalonia dalam Beta, tetapi sekarang bekerja dengan cukup baik. Ini mirip dengan WPF, tetapi dengan beberapa CSS seperti peningkatan gaya.

Saya percaya pada Linux Avalonia menargetkan Gtk saat ini, tetapi mereka ingin pindah ke yang lain. Disebutkan dalam video ini, tetapi saya pribadi tidak dapat memahami apa yang dia katakan: https://www.youtube.com/watch?v=WESJUJWBLJ0

Chris Bordeman
sumber