Является ли знание 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 сегодня.


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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.