Можем ли мы запустить приложение C # / WPF в Mac OS X?

Я продаю приложение C # / WPF (на данный момент ориентировано на .net 3.0), и люди все время спрашивают меня о версии для Mac.

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

У меня нет ресурсов, чтобы переписать приложение или поддерживать две разные базы кода, поэтому мне нужен способ запускать один и тот же код на Mac (я знаю, что мне придется отлаживать и изменять код, я имею в виду, что я может поддерживать только одну базу кода, я не могу разбить проект на разные проекты Mac и Windows - у меня просто нет времени работать над двумя проектами).

Перенос приложения на кроссплатформенную библиотеку пользовательского интерфейса, на другой язык программирования или на Silverlight - все это не актуально - это займет слишком много времени, и я думаю, что я получу больше продаж, инвестируя на этот раз в новые функции.

Кто-нибудь знает об инструменте, который может запускать или переносить C # / WPF на Mac?


person Nir    schedule 24.02.2009    source источник


Ответы (9)


Нет абсолютно никакого способа запустить полноценное приложение WPF на Mac. Я даже не уверен, возможно ли это в Parallels. Лучшее, что вы можете сделать, - это использовать Silverlight, который ранее назывался «WPF / E» и работает на Macintosh.

person Anton Gogolev    schedule 24.02.2009
comment
Эээ, Parallels - это виртуальная машина ... все, что работает в Windows, работает на ней так же, как и в Windows. - person The Muffin Man; 13.11.2014

Мы были в похожей ситуации. У нас был рабочий проект для Windows, и нам нужна была версия для Mac.

Наш продукт состоял из двух частей: одна представляла собой приложение .Net, а другая - приложение для проектора Director.

Приложение Director должно быть простым, кроссплатформенным, да? Ну нет, это редко бывает так просто, мы получили две версии исходного файла Director.

Для запуска приложения .Net требовалось использование Mono для базового движка, что хорошо сработало для нас, поскольку на самом деле мы работали только с массивами байтов, обрабатывающими числа. Пользовательский интерфейс, с другой стороны, нам пришлось переписать на Cocoa. Это стоило нам почти столько же, сколько и создание версии для Windows, поскольку нам также пришлось изучать все вещи для Mac по ходу дела.

С тех пор мы обновили только версию для Windows.

person Iain M Norman    schedule 24.02.2009
comment
На мой взгляд, это хороший пример истории для нового разработчика. Выберите инструменты, которые можно использовать на нескольких платформах. В противном случае вы просто окажетесь в тупике, как только требования изменятся, и руководители захотят, чтобы продукт также был на Mac или Linux. - person Kaspar; 09.10.2017

У нас была аналогичная проблема. Мы написали версию для Mac в Silverlight 3 (которая поддерживает довольно много вещей WPF .NET). Это была песочница, но если это не проблема, вы можете сделать кое-что приятное. Наша кодовая база теперь находится на WPF и Silverlight 3 и остается прежней, когда мы компилируем, она создает приложения SL3 и Desktop.

person Community    schedule 12.08.2009
comment
Спасибо, это похоже на хорошую возможность (Silverlight 3 не существовало, когда я задал вопрос), используете ли вы одни и те же файлы xaml и cs на обеих платформах? - person Nir; 13.08.2009

Вы можете использовать Parallels. У меня есть офисное программное обеспечение, написанное на C # и WPF, и люди все время используют его на Mac под управлением Parallels.

В качестве дополнительного примечания, Parallels позволяет вам запускать приложения Windows одновременно с приложениями Mac OSX, видимыми в их собственном окне на рабочем столе Mac. Он также позволяет копировать, вставлять и перетаскивать между приложениями Mac и Windows.

person Kelly    schedule 29.06.2014

Вам нужна новая функция (поддержка совершенно другой платформы), и вы не хотите прикладывать к ней никаких усилий. Извините, в большинстве случаев это не сработает.

Я не думаю, что помимо самого основного (собственного) .NET с моно, вы не можете запускать приложение WPF изначально на MacOSX.

Если вы думаете, что можете заработать больше денег, получив пользователей Mac. Вы можете рассмотреть возможность использования других методов презентации. Из-за ваших текущих «вложений» я бы посоветовал попробовать Silverlight (да, я читал вашу напыщенную речь о том, что этого не нужно делать). Другой вариант - Adobe AIR / Flex.

Если вы портируете свое приложение таким образом. Вы можете поддерживать единую кодовую базу ... ту, которая работает на обеих платформах.

Если вы хотите уделять больше времени новым функциям в вашей текущей кодовой базе: игнорируйте пользователей Mac.

person Rick    schedule 24.02.2009

Вы можете попробовать Nevron Open Vision. Он интегрируется в проекты WPF, WinForms, Silverlight и MonoMac, Xamarin.Mac. Это не похоже на запуск приложения WPF на Mac, а скорее потребует от вас перекодирования приложения на платформе NOV. Однако как только вы это сделаете, ваше приложение (или модули) будут работать на всех этих платформах из единой базы кода. Хороший пример работы этого подхода - Nevron Writer (часть Nevron Office). Он работает в Windows, Silverlight и Mac на основе 100% единого кода.

[Раскрытие: я работаю на Nevron]

person Ivaylo Milanov    schedule 02.06.2015
comment
Я скачал демо ... посмотрим, но на данный момент, похоже, нет поддержки Visual Designer + XAML, похоже, что все должно быть сделано в коде C # (то есть весь графический интерфейс должен быть создан через Код C #, визуальный конструктор использовать нельзя) - person SirPaulMuaddib; 26.03.2019

Это невозможно. Но поскольку ваш пользовательский интерфейс находится в WPF, вы можете преобразовать XAML во что-то еще - например, GTK # например. Конечно, если вы, как и я, пользуетесь множеством функциональных возможностей .NET 3.5, это вам не очень поможет.

Еще одна причина, чтобы ваш пользовательский интерфейс был для начала в простом упрощенном XML.

person Dmitri Nesteruk    schedule 24.02.2009

На самом деле, для вас есть CrossOver. Другие люди, ответившие на точку зрения программиста. Если бы я был вами, я бы установил CrossOver, затем установил .NET 3.5 внутри CrossOver и успешно запустил программное обеспечение WPF.

http://www.codeweavers.com/products/cxmac/

или, если вы предпочитаете бесплатное (но более сложное) решение, попробуйте вино.

http://davidbaumgold.com/tutorials/wine-mac/

person VOX    schedule 02.07.2010
comment
Это хорошая идея с точки зрения клиента - я не знаю, работает ли мое программное обеспечение под CrossOver, но я знаю, что некоторые люди запускают мое программное обеспечение под Parallels, - но - с точки зрения поставщика программного обеспечения (особенно с недорогим программным обеспечением) ) Я не могу просто установить CrossOver на компьютер моего клиента (особенно когда CrossOver Pro дороже, чем мое программное обеспечение) - person Nir; 04.07.2010
comment
Просто хочу прояснить разницу между Parallels / VMWare и Wine / CrossOver. Parallels или VMWare - эмуляторы виртуального оборудования, которые могут загружать Windows. Они имитируют оборудование. Что вам нужно для загрузки Windows (также требуется лицензия Windows), а затем запустить свое программное обеспечение на эмулированном оборудовании, на котором работает Windows. Wine / Crossover - это что-то, что переписало среду Windows на Mac / Linux. Это дало вашей программе все, что она ожидает от ОС Windows. И ваша программа работает на собственной скорости без необходимости загрузки Windows и без лицензии. - person VOX; 04.07.2010
comment
Как вы можете предложить Wine в качестве ответа, не проводя никаких исследований? Посмотрите здесь, вы увидите, что .NET 3.0 или более поздняя версия все еще не работает в Wine (май 2011 г.), и вы ответили год назад: appdb.winehq.org/ - person Nikolaos; 20.05.2011
comment
Кроме того, как вы можете предложить CrossOver в качестве ответа, не проводя исследования? Посмотрите здесь, CrossOver даже не поддерживает .NET 2.0 (по состоянию на май 2011 г.), где, как вы ответили год назад: codeweavers.com/compatibility/search/?name=.net+framework - person Nikolaos; 20.05.2011
comment
Я никогда не видел, чтобы симуляторы среднего уровня работали должным образом и полностью. Даже целый аппаратный эмулятор, такой как Parallels или VMWare, иногда дает сбой из-за неизвестной несовместимости. - person eonil; 11.12.2012
comment
Что ж, сейчас 2021 год, но CrossOver, похоже, работает с .NET 4.7.2 (по крайней мере). - person Gwyneth Llewelyn; 11.01.2021

Еще одно коммерческое решение - NoesisGUI (бесплатно для <100 000 валового годового дохода). Это кроссплатформенная структура пользовательского интерфейса, основанная на WPF / XAML. Существует руководство по миграции с WPF.

person adabru    schedule 20.07.2019