Чи знання 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.