Является ли знание 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).
Lamont
3
C # приложение , как правило , не работает изначально в любом месте.
Стоп Harm Моника
@ OrangeDog Я знаю, даже на Windows вам нужно установить .Net Framework. Если я сказал "изначально", я имею в виду без эмуляции или совместимости слоя. Я имею в виду, если Linux поддерживает его независимо от того, сколько программ или пакетов вам нужно установить.
Джейкоб
2
Какое отношение это имеет к Ubuntu?
underscore_d
2
@underscore_d Я не знаю, где ты это слышал, но это неправда. См. «Не только Ubuntu-специфичные» вопросы по теме? Многие, многие вопросы по Ask Ubuntu в равной степени относятся к подавляющему большинству систем GNU / Linux. Возможно, кто-то найдет правдоподобную причину для того, чтобы считать этот вопрос не по теме, но если это так, то это не так. (Кстати, это действительно есть ответы с Ubuntu специфичной информацией Второй абзац моего поста о пакетах Ubuntu, он переносится на некоторые, но не все, другие дистрибутивы.)
Eliah Каган

Ответы:

55

Скорее всего, вы наткнетесь на http://www.mono-project.com/

Как сказано на странице About Mono :

Mono, платформа разработки с открытым исходным кодом, основанная на .NET Framework, позволяет разработчикам создавать кроссплатформенные приложения с повышенной производительностью разработчиков. Внедрение Mono .NET основано на стандартах ECMA для C # и инфраструктуры общего языка .

В Поддерживаемые платформы включают Linux.

финн
источник
2
Моно ... звучит знакомо ... О да, это то, на чем основано единство! Я понятия не имел, что могу использовать его отдельно. Я думал, что это часть Unity3d.
Джейкоб
41
Последняя версия реализации Microsoft (.Net Core) также поддерживает Linux.
BlueRaja - Дэнни Пфлугхофт
6
Mono реализует стандарт .net 2.0 (iirc), а не только ядро.
Кейси
13
Это был бы хороший ответ несколько лет назад. Теперь это в значительной степени устарело.
Конрад Рудольф
2
Если вы используете последнюю версию Ubuntu, пожалуйста, пожалуйста, не используйте mono, в ней так много ошибок и плохих реализаций, используйте ядро ​​.net. Там, где я работаю, почти все проблемы, возникающие у нас при запуске приложений C # на старых дистрибутивах Linux, можно объяснить выражением «из-за моно». Фильтры исключений теряют следы стека, асинхронные реализации, являющиеся обертками Task.Run, утечки памяти по всему кадру и отсутствие поддержки valgrind, поэтому вы даже не можете правильно диагностировать утечку.
Луказоид
72

Да, вы можете разрабатывать программное обеспечение на Ubuntu, которое само будет работать на Ubuntu, в C #. И Mono, и .NET Core поддерживают системы GNU / Linux , такие как Ubuntu. (Вы можете использовать их и в других дистрибутивах , таких как Debian, Raspbian, Fedora, CentOS, Arch, Gentoo и т. Д.) Игровой движок Unity3D также поддерживает Ubuntu, как вы, наверное, знаете. Unity3D встраивает моно .

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

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

Элия ​​Каган
источник
10
Можно также упомянуть Rider, основанную на идеях интегрированную среду разработки для C #, которая содержит все функциональные возможности ReSharper для Visual Studio.
Уилберт
Вы можете настроить этот ответ, чтобы он подразумевал, что существуют другие дистрибутивы Linux. Поскольку они также будут предоставлять или поддерживать моно, вы можете захотеть быть немного более нейтральным и инклюзивным.
user2066657
@ user2066657 Спасибо за предложение; Я редактировал. Я хотел прояснить, как Mono и .NET Core не ограничиваются Ubuntu («системы GNU / Linux, такие как Ubuntu»). Но при дальнейшем рассмотрении я понимаю, что это, возможно, не было понятно читателям, которые еще не знали, что я пытался им сказать. Так что я расширил эту часть. Я понимаю, что это изменение может вас не устраивать: я сделал его более содержательным, но не более нейтральным. Разумно для постов на этом сайте, чтобы подчеркнуть Ubuntu. Средняя часть, где приводятся примеры программ на C # с последующими пакетами Ubuntu, специально сфокусирована на Ubuntu.
Элия ​​Каган
Если бы ОП хотел спросить о не-Ubuntu ОС, они, вероятно, спросили бы в 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 сегодня.

gorlok
источник
4
Вы также можете создавать настольные приложения в .NET Core.
PmanAce
Вы также можете использовать Avalonia, кросс-платформенную повторную реализацию WPF для создания мобильных приложений + приложений для настольных компьютеров на Mac + Linux + Windows. И, наконец, не-мусорный инструментарий пользовательского интерфейса!
Крис Бордеман
2

Теперь вы можете даже создавать кросс-платформенные приложения на основе XAML (Linux, Mac, Windows, Android, iOS, UWP), используя .Net Core и новый проект под названием Avalonia. Авалония находится в бета-версии, но теперь работает довольно хорошо. Он похож на WPF, но с некоторыми CSS-подобными улучшениями стиля.

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

Крис Бордеман
источник