Существует ли кроссплатформенная инфраструктура графического интерфейса для C # /. NET? - PullRequest
7 голосов
/ 23 апреля 2009

Допустим, ради радости, я решил, что больше не хочу писать настольные приложения на Java, а вместо этого хочу перейти на использование C #. Я хочу иметь возможность создать приложение, которое будет работать на некоторых распространенных дистрибутивах Linux, и недавний выпуск MS Windows. Это будет иметь компонент GUI.

В Java я могу создать приложение, использующее Swing. Как только у меня это получится, я могу скопировать этот jar-файл из Windows в Linux или наоборот, в зависимости от того, где я его разработал. И это, как правило, будет работать с java -jar myapp.jar.

В C # возможно ли это сделать? Есть ли в C # функциональный эквивалент Swing или AWT?

Ответы [ 9 ]

19 голосов
/ 17 апреля 2012

Есть Eto.Forms (на github), который представляет собой слой абстракции поверх WPF , WinForms , GTK , и MonoMac / Cocoa - так что вы можете получить собственный интерфейс на всех платформах без необходимости повторной реализации для каждой платформы. Вам не нужно страдать от наименьшего общего знаменателя, поскольку вы можете реализовать специфику для каждой платформы (при желании, но не обязательно).

Преимущество этого метода в том, что он является чистым .NET и опирается только на предоставляемые ОС зависимости, а не на использование GTK или WxWidgets, где вам придется связывать собственные двоичные файлы для различных платформ.

13 голосов
/ 23 апреля 2009

Вероятно, GTK # будет ближайшим.

Я знаю, что другие сказали моно, но это не совсем верно. .Net - это моно, так же как Java VM от Microsoft и Sun Java. Моно не совсем в том же концептуальном пространстве, что и Swing. Для этого GTK # более близок.

5 голосов
/ 23 апреля 2009

Эта страница содержит список наборов инструментов GUI, поддерживаемых Mono, включая плюсы и минусы для каждого из них. Как и предполагали другие, WinForms, GTK # и wxNet являются жизнеспособными вариантами.

5 голосов
/ 23 апреля 2009

Я считаю, что значительная часть WinForms реализована в Mono. Для этого вам нужно установить Mono под Linux. Однако могут возникнуть проблемы с совместимостью, поскольку Mono не является разработкой Microsoft и официально не поддерживается ими.

3 голосов
/ 15 ноября 2014

Это старый вопрос, но в качестве обновления комбинация Mono и Xamarin должна работать для ваших современных межплатформенных потребностей.

http://www.mono -project.com / документы / гуй / WinForms /

Microsoft выпустила .NET с открытым исходным кодом и намерена представить ядро ​​.NET для Linux и MacOS с их следующей версией. Microsoft также установила тесные партнерские отношения с Mono и Xamarin, специально для того, чтобы помочь с их библиотеками Android и Linux.

http://www.hanselman.com/blog/AnnouncingNET2015NETAsOpenSourceNETOnMacAndLinuxAndVisualStudioCommunity.aspx

2 голосов
/ 14 ноября 2014

Для iOS, Android и Windows Mobile существует Xamarin.Forms. http://xamarin.com/forms Это уровень абстракции, который позволяет писать кроссплатформенный код, который привязывается к встроенным инструментам GUI под капотом.

Я ищу больше подобных решений - меня интересуют не только мобильные платформы, но и настольные платформы (windows, mac OSX, fedora / ubuntu / etc linux)

2 голосов
/ 23 апреля 2009

Самым близким, что я когда-либо видел, является Mono - хотя он не поддерживает все библиотеки CLR, но я считаю, что он кроссплатформенный.

2 голосов
/ 23 апреля 2009

Вы можете попробовать WxWidgets . Он поддерживает C # среди многих других языков и является кроссплатформенным. Единственным недостатком является перекомпиляция для каждой платформы. В качестве альтернативы вы можете попробовать Mono, что очень хорошо, но будьте осторожны, есть пара проблем с совместимостью. Для приложений на C # не существует предопределенного файла «где угодно», хотя, как в Java с jars, лучше всего перекомпилировать для каждой платформы, если вы хотите обеспечить совместимость.

0 голосов
/ 23 апреля 2009

Windows.Forms - это стандартная библиотека для разработки приложений с графическим интерфейсом для .NET

Несмотря на хорошую поддержку в Windows, версия 2.0 полностью реализована и в Mono, что делает ее доступной на всех платформах, поддерживаемых Mono.

WPF, с другой стороны, является концептуально новой библиотекой, на данный момент она полностью поддерживается в основном только для Windows, и лишь небольшая ее часть поддерживается Mono благодаря их реализации Silverlight - Moonlight.

Если вы создаете приложение для продуктивного кроссплатформенного использования и / или имеете консервативные ограничения производительности, переходите на Windows Forms.

Если вы хотите поэкспериментировать и узнать что-то новое, или если вы разрабатываете новое приложение для Windows, перейдите в WPF. Это новая технология для клиентских приложений с графическим интерфейсом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...