Чи знання C # про будь-яке використання в системі Linux?


44

Я знаю C # і мені подобається перемикатися між системами та використовувати Linux. Чи можу я використовувати C # для створення програм, які будуть працювати в Linux? Що мені робити, щоб використовувати свої знання C # в системі Linux?

Зауважте, що я спеціалізуюся на Unity3D, але все ж хочу створити програми Linux за допомогою C #.


1
KerbalSpaceProgram написано в Unity і працює на Win / Mac / Linux. Плагіни / Моди для KSP написані на C # і можуть бути розроблені на Win, Mac або Linux. Я в основному використовую Mac замість Linux для $ REASONS, але я займаюся розробкою моди KSP на цій платформі в C #, а не Windows. Я, швидше за все, незабаром напишу окремий код C # з тестами xUnit за межами KSP, і це буде подібно до будь-якої іншої розробки, але мені доведеться просто запустити його під моно. У MechJeb є приклад Makefile, який створюється на Mac + Linux: github.com/MuMech/MechJeb2/blob/master/Makefile (для з'єднання потрібні ігрові копи KSP).
Ламонт

3
C # додаток , як правило , не працює спочатку в будь-якому місці.
Зупиніть шкодити Моніці

@OrangeDog Я знаю, навіть у Windows потрібно встановити .Net Framework. Якщо я сказав "на самому", я маю на увазі без будь-якого рівня емуляції чи сумісності. Я в основному маю на увазі, якщо Linux підтримує це незалежно від того, скільки програм або пакетів вам потрібно встановити.
Яків

2
Яке значення має щось із цього для Ubuntu?
підкреслюй_

2
@underscore_d Я не знаю, де ти це чув, але це неправда. Див. Чи питання "не лише для Ubuntu" на тему? Багато, багато запитань щодо Ask Ubuntu однаково стосуються переважної більшості систем GNU / Linux. Можливо, хтось знайде правдоподібну причину вважати це питання поза темою, але якщо так, то це буде не так. (До речі, це дійсно є відповіді з Ubuntu специфічною інформацією Другий абзац мого поста про пакети Ubuntu, він переноситься на деякі, але не всі, інші дистрибутиви.)
Eliah Каган

Відповіді:


55

Швидше за все, ви натрапите на http://www.mono-project.com/

Як говорить сторінка About Mono :

Mono, платформа розробки з відкритим кодом, заснована на .NET Framework, дозволяє розробникам створювати міжплатформенні програми з підвищеною продуктивністю для розробників. Реалізація .NET Mono базується на стандартах ECMA для C # та загальної мовної інфраструктури .

В Підтримувані платформи включають Linux.


2
Моно ... звучить знайомо ... О так, саме на цьому ґрунтується єдність! Я поняття не мав, що я можу використовувати його окремо. Я подумав, що це частина Unity3d.
Яків

41
Остання версія впровадження Microsoft (.Net Core) також підтримує Linux.
BlueRaja - Danny Pflughoeft

6
Моно реалізує .net стандарт 2.0 (iirc) не просто ядро.
Кейсі

13
Це було б гарною відповіддю кілька років тому. Зараз це майже застаріло.
Конрад Рудольф

2
Якщо ви використовуєте останню версію Ubuntu, будь ласка, будь ласка, не використовуйте моно, у ній багато помилок і поганих реалізацій, використовуйте .net core. Де я працюю, майже кожне питання, яке ми маємо при запуску програм C # на старих Linux-дистрибутивах, можна пояснити висловом: "через моно". Фільтри винятку втрачають сліди стека, асинхронні реалізації, які є обгортками Task.Run, пам'ять протікає по всьому кадру та відсутність підтримки valgrind, тому ви навіть не можете правильно діагностувати витік.
Луказоїд

72

Так, ви можете розробити програмне забезпечення на Ubuntu, яке само буде працювати на Ubuntu, в C #. І Mono, і .NET Core підтримують такі системи GNU / Linux, як Ubuntu. (Ви можете використовувати їх і в інших дистрибутивах , як, наприклад, Debian, Raspbian, Fedora, CentOS, Arch, Gentoo тощо). Ігровий движок Unity3D також підтримує Ubuntu, як ви, напевно, знаєте. Unity3D вбудовує Mono .

Ряд пакетів для Ubuntu, які можна встановити за допомогою менеджера пакетів Ubuntu з офіційно підтримуваних спільнотами програмних джерел, записуються на C # і використовують Mono. Сюди входить музичний плеєр Banshee , примітка програми Tomboy , редактор растрової графіки Pinta та менеджер паролів KeePass (починаючи з версії 2).

Більшість текстових редакторів, таких як Gedit, Vim та Emacs, мають виділення синтаксису для C #. MonoDevelop та Visual Studio Code - це дві популярні інтегровані середовища розробки, які працюють на Ubuntu та підтримують розробку C #.


10
Можливо, згадайте також про Rider, заснований на ідеях IDE для C #, який містить всю функціональність ReSharper для Visual Studio.
Вільберт

Ви можете налаштувати цю відповідь, щоб вона передбачала, що існують інші дистрибутиви Linux. Оскільки вони також надаватимуть або підтримуватимуть моно, ви можете бути трохи більш нейтральними та всеосяжними.
користувач2066657

@ user2066657 Дякую за пропозицію; Я відредагував. Я мав на меті зрозуміти, як Mono і .NET Core не обмежуються Ubuntu ("такі системи GNU / Linux, як Ubuntu"). Але з подальшого розгляду я розумію, що це може бути не зрозуміло читачам, які вже не знали, що я намагаюся їм сказати. Тому я розширив цю частину. Я розумію, що ця редакція може вас не задовольнити: я зробив це всеосяжнішим, але не більш нейтральним. Доцільно публікації на цьому веб-сайті робити акцент на Ubuntu. Середня частина, наводячи приклади програм C # з низхідними пакетами Ubuntu, свідомо зосереджена на Ubuntu.
Елія Каган

Якби ОП хотіла запитати про не-Ubuntu OS, вони, ймовірно, запитали б в Unix & Linux .
Містер Лістер

@MrLister Так, погодився. Але я думаю, що щось додано, і нічого втраченого, я додав уточнення. Я не збираюся переробляти пошту в цілому. Наприклад, я подумав сказати щось про те, які дистрибутиви MonoDevelop та Visual Studio Code досить просто встановити та використовувати, але вирішив проти цього, виходячи з того, що це дещо складне і в кінцевому підсумку змінить тон і фокус (і довжину!) ) посади.
Елія Каган

20
  1. Тепер ви можете розробляти серверні програми на Linux за допомогою C # ( .NET Core Framework), як і Java або Python. Під серверними програмами я маю на увазі переважно веб-програми та додатки для веб-служб (REST). Це ідеально підходить для контейнерів Linux ( Docker / K8s) та хмар.
  2. Ви можете розробляти настільні програми за допомогою C # за допомогою інструментарію Mono Framework (реалізація .NET) та GTK # (GtkSharp) (обгортки GTK). На ньому розроблено багато проектів. Ця структура в минулому мала певний опір частини спільноти Linux. Деякі розповсюдження та користувачі не хотіли додатків Mono.
  3. Ви можете розробляти ігри за допомогою Unity Engine за допомогою C # в Linux. Unity Editor поки не експериментальний на Linux.

Отже, так. Знання про C # можуть бути дуже корисними сьогодні для систем Linux.


4
Ви також можете робити настільні програми в .NET Core.
PmanAce

Ви також можете використовувати Avalonia, кросплатформенну повторну реалізацію WPF, щоб робити мобільні + настільні додатки на Mac + Linux + Windows. Нарешті інструментарій інтерфейсу без сміття!
Кріс Бордеман

2

Тепер ви навіть можете робити додаткові крос-платформи на базі XAML (Linux, Mac, Windows, Android, iOS, UWP), використовуючи .Net Core та новий проект під назвою Avalonia. Avalonia є в бета-версії, але зараз працює досить добре. Він схожий на WPF, але з деякими CSS, як покращення стилів.

Я вірю, що Linux Avalonia зараз націлений на Gtk, але вони хочуть перейти на щось інше. Це згадується у цьому відео, але я особисто не міг зрозуміти, що він сказав: https://www.youtube.com/watch?v=WESJUJWBLJ0

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.