Czy znajomość C # ma jakiekolwiek zastosowanie w systemie Linux?

44

Znam C # i lubię przełączać się między systemami i używać Linuksa. Czy mogę używać C # do tworzenia aplikacji, które będą natywnie działać w systemie Linux? Co powinienem zrobić, aby wykorzystać moją wiedzę na temat C # w systemie Linux?

Zauważ, że specjalizuję się w Unity3D, ale nadal chcę tworzyć aplikacje Linux za pomocą C #.

Jakub
źródło
1
KerbalSpaceProgram jest napisany w Unity i działa na Win / Mac / Linux. Wtyczki / mody do KSP są napisane w C # i mogą być rozwijane na Win, Mac lub Linux. Używam teraz głównie Maca zamiast Linuksa dla $ REASONS, ale programuję modyfikacje KSP na tej platformie w C #, a nie Windows. Prawdopodobnie zamierzam wkrótce napisać samodzielny kod C # z testami xUnit poza KSP i będzie to tak jak każdy inny program, ale będę musiał uruchomić go w trybie mono. MechJeb ma przykładowy Makefile, który buduje na Mac + Linux: github.com/MuMech/MechJeb2/blob/master/Makefile (wymaga dlls KSP do połączenia).
lamont,
3
Aplikacje C # zwykle nigdzie nie działają natywnie .
Stop Harming Monica
@OrangeDog Wiem, nawet w systemie Windows musisz zainstalować .Net Framework. Jeśli powiedziałem „natywnie”, to znaczy bez warstwy emulacji lub kompatybilności. Zasadniczo mam na myśli to, czy Linux obsługuje to bez względu na to, ile programów lub pakietów trzeba zainstalować.
Jacob
2
Jakie znaczenie ma to dla Ubuntu?
underscore_d
2
@underscore_d Nie wiem, gdzie to słyszałeś, ale to nieprawda. Zobacz: Czy pytania „nie tylko specyficzne dla Ubuntu” dotyczą danego tematu? Wiele, wiele pytań dotyczących Ask Ubuntu dotyczy jednakowo większości systemów GNU / Linux. Być może ktoś znajdzie wiarygodny powód, aby uznać to pytanie za nie na temat, ale jeśli tak, to nie będzie tak. (Btw, to zawiera odpowiedzi z informacjami specyficznymi dla Ubuntu. Drugi akapit mojego postu dotyczy pakietów Ubuntu; przenosi się do niektórych, ale nie wszystkich innych dystrybucji).
Eliah Kagan

Odpowiedzi:

55

Najprawdopodobniej natkniesz się na http://www.mono-project.com/

Jak mówi strona About Mono :

Mono, platforma programistyczna typu open source oparta na .NET Framework, umożliwia programistom tworzenie aplikacji wieloplatformowych o zwiększonej produktywności. Implementacja Mono .NET oparta jest na standardach ECMA dla C # i Common Language Infrastructure .

Do obsługiwanych platformach m.in. Linux.

Fin
źródło
2
Mono ... brzmi znajomo ... O tak, na tym opiera się jedność! Nie miałem pojęcia, że ​​mogę go używać osobno. Myślałem, że jest częścią Unity3d.
Jacob
41
Najnowsza wersja implementacji Microsoftu (.Net Core) obsługuje również Linuksa.
BlueRaja - Danny Pflughoeft
6
Mono implementuje standard .net 2.0 (iirc) nie tylko rdzeń.
Casey
13
To byłaby miła odpowiedź kilka lat temu. Teraz jest prawie przestarzały.
Konrad Rudolph
1
@KonradRudolph jest przestarzały? ale czy rdzeń .NET nie wymaga w zasadzie zależności NuGet dla dowolnego programu na poziomie produkcyjnym? czy są też inne alternatywy
ktoś
72

Tak, możesz opracować oprogramowanie na Ubuntu, które samo będzie działało na Ubuntu, w języku C #. Zarówno Mono, jak i .NET Core obsługują systemy GNU / Linux , takie jak Ubuntu. (Możesz używać ich również w innych dystrybucjach , takich jak Debian, Raspbian, Fedora, CentOS, Arch, Gentoo itp.) Silnik gry Unity3D obsługuje również Ubuntu, jak zapewne wiesz. Unity3D zawiera Mono .

Wiele pakietów dla Ubuntu, które można zainstalować za pomocą menedżera pakietów Ubuntu z oficjalnie wspieranych przez społeczność źródeł oprogramowania, jest napisanych w C # i używa Mono. Obejmuje to odtwarzacz muzyki Banshee , aplikację do robienia notatek Tomboy , edytor grafiki rastrowej Pinta oraz menedżera haseł KeePass (od wersji 2).

Większość edytorów tekstu, takich jak Gedit, Vim i Emacs, wyróżnia składnię dla C #. MonoDevelop i Visual Studio Code to dwa popularne zintegrowane środowiska programistyczne działające w systemie Ubuntu i obsługujące programowanie w języku C #.

Eliah Kagan
źródło
10
Może także wspomnieć o Rider, IDE opartym na inteligentnych IDE dla C #, który zawiera wszystkie funkcje ReSharper dla Visual Studio.
Wilbert,
Być może zechcesz dostroić tę odpowiedź, aby sugerowała, że ​​istnieją inne dystrybucje linuksa. Ponieważ będą one również zapewniać lub wspierać mono, możesz być nieco bardziej neutralny i sprzyjający integracji.
user2066657
@ user2066657 Dziękuję za sugestię; Edytowałem. Chciałem wyjaśnić, w jaki sposób Mono i .NET Core nie były ograniczone do Ubuntu („Systemy GNU / Linux takie jak Ubuntu”). Ale po dalszych rozważaniach zdaję sobie sprawę, że może to nie być jasne dla czytelników, którzy nie wiedzieli już, co próbowałem im powiedzieć. Więc rozwinąłem tę część. Zdaję sobie sprawę, że ta zmiana może cię nie zadowolić: uczyniłem ją bardziej włączającą, ale nie bardziej neutralną. W postach na tej stronie uzasadnione jest podkreślanie Ubuntu. Środkowa część, podająca przykłady programów w języku C # z późniejszymi pakietami Ubuntu, jest celowo skupiona na Ubuntu.
Eliah Kagan,
Gdyby OP chciał zapytać o systemy operacyjne inne niż Ubuntu, prawdopodobnie zapytaliby w systemach Unix i Linux .
Pan Lister,
@MrLister Tak, uzgodniono. Ale myślę, że coś zyskałem i nic nie straciłem dzięki wyjaśnieniu, które dodałem. Jednak nie planuję przerabiać posta jako całości. Na przykład zastanawiałem się nad powiedzeniem o tym, które dystrybucje MonoDevelop i Visual Studio Code są dość łatwe do zainstalowania i używania, ale zdecydowałem się tego nie robić, ponieważ jest to nieco skomplikowane i ostatecznie zmieniłoby ton i ostrość (i długość! ) postu.
Eliah Kagan
20
  1. Możesz teraz tworzyć aplikacje serwerowe w systemie Linux przy użyciu C # ( .NET Core Framework), podobnie jak Java lub Python. Przez aplikacje serwerowe rozumiem głównie aplikacje internetowe i aplikacje usług internetowych (REST). To idealnie pasuje do kontenerów Linux ( Docker / K8s) i chmur.
  2. Możesz tworzyć aplikacje stacjonarne z C # za pomocą Mono Framework (implementacja .NET) i GTK # (GtkSharp) zestaw narzędzi (opakowanie GTK). Opracowano na nim wiele projektów. Ten framework miał w przeszłości pewien opór ze strony społeczności Linuksa. Niektóre dystrybucje i użytkownicy nie chcieli aplikacji Mono.
  3. Możesz tworzyć gry z Unity Engine za pomocą C # w systemie Linux. Unity Editor jest jeszcze w fazie eksperymentalnej na Linuksie.

Więc tak. Wiedza na temat C # może być dzisiaj bardzo przydatna w systemach Linux.

gorlok
źródło
4
Możesz także wykonywać aplikacje komputerowe w .NET Core.
PmanAce
2

Teraz możesz nawet tworzyć aplikacje oparte na XAML dla różnych platform (Linux, Mac, Windows, Android, iOS, UWP), używając .Net Core i nowego projektu o nazwie Avalonia. Avalonia jest w fazie beta, ale teraz działa całkiem dobrze. Jest podobny do WPF, ale z pewnymi ulepszeniami stylów CSS.

Wierzę, że Linux Avalonia obecnie atakuje Gtk, ale chcą przejść do czegoś innego. O tym jest wspomniane w tym filmie, ale osobiście nie mogłem zrozumieć, co powiedział: https://www.youtube.com/watch?v=WESJUJWBLJ0

Chris Bordeman
źródło