Можем ли мы запустить приложение C#/WPF в Mac OS X?
Я продаю приложение на C#/WPF (на данный момент ориентировано на.net 3.0), и люди продолжают спрашивать меня о версии для Mac.
Приложение представляет собой приложение для отслеживания времени с хорошим графическим интерфейсом, в приложении для отслеживания времени не так много бизнес-логики, поэтому большая часть приложения представляет собой графический интерфейс - переписывание только графического интерфейса эквивалентно переписыванию всего приложения
У меня нет ресурсов, чтобы переписать приложение или поддерживать две разные базы кода, поэтому мне нужен способ запуска одного и того же кода на Mac (я знаю, что мне придется отлаживать и изменять код, я имею в виду, что я могу поддерживать только одну кодовую базу, я не могу разбить проект на разные проекты Mac и Windows - у меня просто нет времени работать над двумя проектами).
Портирование приложения в кросс-платформенную библиотеку пользовательского интерфейса, на другой язык программирования или в Silverlight не имеет значения - это займет слишком много времени, и я думаю, что я получу больше продаж, инвестируя это время в новые функции.
Кто-нибудь знает инструмент, который может запустить или портировать C#/WPF на Mac?
10 ответов
Нет абсолютно никакого способа запустить полноценное приложение WPF на Mac. Я даже не уверен, возможно ли это в Parallels. Лучшее, что вы можете сделать, это использовать Silverlight, который ранее назывался "WPF/E" и работает на Macintosh.
У нас была похожая проблема. Мы написали версию для Mac в Silverlight 3 (которая поддерживает довольно много WPF .NET). Это была песочница, но если это не проблема, вы можете сделать что-то хорошее. Наша кодовая база теперь находится на WPF и Silverlight 3 и остается той же самой, когда мы компилируем ее, она создает приложения SL3 и Desktop.
Мы были в похожей ситуации. У нас был рабочий проект для Windows, и мы хотели версию для Mac.
Наш продукт состоял из двух частей: одна - приложение.Net, другая - приложение проектора Director.
Приложение Director должно быть простым, кроссплатформенным и все такое? Ну нет, это редко бывает так просто, в итоге мы получили две версии исходного файла Director.
Для запуска.Net-приложения требовалось использовать Mono для базового движка, что хорошо сработало для нас, поскольку мы работали только с числовыми байтовыми массивами. Пользовательский интерфейс с другой стороны, мы должны были переписать в Какао. Это стоило нам почти столько же, сколько стоило сделать версию для Windows, так как нам также пришлось изучать все, что касается Mac, по ходу дела.
С тех пор мы обновили только версию для Windows.
Вы можете использовать Parallels. У меня есть офисное программное обеспечение, написанное на C# и WPF, и люди все время используют его на Mac под Parallels.
Кроме того, Parallels позволяет вам запускать приложения Windows бок о бок с приложениями Mac OSX, видимыми в их собственном окне на рабочем столе Mac. Он также позволяет копировать, вставлять и перетаскивать между приложениями Mac и Windows.
Вам нужна новая функция (поддержка совершенно другой платформы), и вы хотите, чтобы в ней не было никаких усилий. Извините, большую часть времени это не будет работать.
Кроме самых простых (нативных) вещей.NET с моно, я не думаю, что вы можете запускать приложение WPF изначально на MacOSX.
Если вы думаете, что вы можете заработать больше денег, приобретая пользователей Mac. Вы можете рассмотреть возможность использования других методов презентации. Из-за ваших нынешних "вложений" я бы сказал, попробуйте Silverlight (да, я читал ваши разговоры о том, как этого не делать) . Другим вариантом может быть Adobe AIR / Flex.
Если вы перенесете свое приложение таким образом. Вы можете поддерживать одну кодовую базу, которая работает на обеих платформах.
Если вы хотите тратить больше времени на новые функции в своей текущей кодовой базе: игнорируйте пользователей Mac.
Вы можете попробовать Nevron Open Vision. Он интегрируется в проекты WPF,WinForms,Silverlight и MonoMac, Xamarin.Mac. Это не то же самое, что запуск приложения WPF на Mac, но скорее всего вам потребуется перекодировать приложение на платформе NOV. Однако, как только вы это сделаете, ваше приложение (или модули) будут работать на всех этих платформах из единой базы кода. Хорошим примером такого подхода является Nevron Writer (часть Nevron Office). Он работает на Windows, Silverlight и Mac из 100% единого кода.
[Раскрытие: я работаю на Неврон]
На самом деле, для вас есть CrossOver. Другие люди, которые отвечают взгляду с точки зрения программиста. Если бы я был вами, я бы установил CrossOver, затем установил.NET 3.5 в CrossOver и успешно запустил программное обеспечение WPF.
http://www.codeweavers.com/products/cxmac/
или, если вы предпочитаете бесплатное (но более сложное) решение, попробуйте вино.
Другое коммерческое решение - NoesisGUI (бесплатно для валового годового дохода <100K). Это кроссплатформенная инфраструктура пользовательского интерфейса, основанная на WPF/XAML. Есть руководство по миграции с WPF.
Это не может быть сделано. Но поскольку ваш пользовательский интерфейс находится в WPF, вы можете преобразовать XAML во что-то другое - например, GTK#. Конечно, если вы похожи на меня и используете много функций.NET 3.5, это вам мало поможет.
Еще одна причина, по которой вам следует начать с простого и понятного XML-интерфейса.
У меня была такая же проблема с WPF, и я нашел более простое/безопасное решение. В итоге я использовал Unity для создания пользовательского интерфейса C#, который работает на MacOS, Windows и других платформах. Вот базовое руководство, которое я сделал о том, как это сделать: https://medium.com/@A51/how-to-easily-develop-ac-ui-app-that-works-on-mac-and-windows-8eaf32ea0ed6. Я рад помочь с любыми вопросами я могу.