2009-02-24 107 views
31

Vendo una aplicación C#/WPF (apuntando a .NET 3.0 por el momento) y la gente sigue pidiéndome una versión para Mac.¿Podemos ejecutar una aplicación C#/WPF en Mac OS X?

La aplicación es una aplicación de seguimiento de tiempo con una buena interfaz gráfica de usuario, no es que gran parte lógica de negocio en un tiempo de seguimiento de aplicación para la mayor parte de la aplicación GUI es - simplemente volver a escribir la interfaz gráfica de usuario es equivalente a volver a escribir toda la aplicación

No tengo los recursos para reescribir la aplicación o mantener dos bases de código diferentes, así que necesito una forma de ejecutar el mismo código en una Mac (sé que tendré que depurar y modificar el código, lo que quiero decir es que puedo admitir solo una base de código, no puedo dividir el proyecto en diferentes proyectos de Mac y Windows; simplemente no tengo tiempo para trabajar en dos proyectos).

Transportar la aplicación a una biblioteca de UI multiplataforma, a un lenguaje de programación diferente oa Silverlight no son relevantes; llevará demasiado tiempo y creo que obtendré más ventas invirtiendo esta vez en nuevas funciones .

¿Alguien sabe de una herramienta que pueda ejecutar o portar C#/WPF a la Mac?

+0

Esta es una gran * advertencia * "pregunta". –

Respuesta

11

No hay forma de que pueda ejecutar la aplicación WPF en toda regla en Mac. Ni siquiera estoy seguro de si esto es posible en Parallels. Lo mejor que puede hacer es usar Silverlight, que anteriormente se llamaba "WPF/E" y se ejecuta en Macintosh.

+25

Uh Parallels es una máquina virtual ... todo lo que se ejecuta en Windows se ejecuta en él mientras se ejecuta ... windows. –

+0

Tengo uno simple que se ejecuta en Parallels – Kalecser

+0

Tengo una gran aplicación empresarial que es WPF y funciona bajo paralelos. – Kelly

0

No se puede hacer. Pero como su UI está en WPF, lo que podría hacer es transformar XAML en algo más, como GTK# por ejemplo. Por supuesto, si eres como yo y utilizas muchas funcionalidades de .NET 3.5, eso no te ayudará mucho.

Una razón más para mantener su interfaz de usuario en un simple y simple XML para empezar.

2

Desea una nueva característica (admita una plataforma completamente diferente) y no desea esforzarse en ello. Lo siento, la mayoría de las veces eso no funcionará.

Además del material .NET más básico (nativo) con mono, no creo que pueda ejecutar una aplicación WPF nativamente en MacOSX.

Si crees que puedes ganar más dinero ganando usuarios de Mac. Puede considerar usar otros métodos de presentación. Debido a su 'inversión' actual, yo diría que pruebe Silverlight (sí, leí su diatriba sobre no hacerlo). Otra opción podría ser Adobe AIR/Flex.

Si transfiere su aplicación de esta manera. Puede mantener una única base de código ... una que se ejecute en ambas plataformas.

Si desea dedicar más tiempo a las nuevas funciones en su base de código actual: ignore a los usuarios de Mac.

5

Estábamos en una situación similar. Teníamos un proyecto de Windows que funcionaba y queríamos una versión para Mac.

Nuestro producto se dividió en dos partes, una aplicación .Net y la otra una aplicación de proyector Director.

La aplicación de Director debe ser fácil, multiplataforma y todo? Bueno, no, rara vez es así de fácil, terminamos con dos versiones del archivo fuente del Director.

Para ejecutar la aplicación .Net se requiere utilizar Mono para el motor subyacente, lo que funcionó bien para nosotros, ya que en realidad solo éramos matrices de bytes de números crujidos. La interfaz de usuario por otro lado, tuvimos que reescribir en Cocoa.Nos costó casi tanto como hacer la versión de Windows, ya que también tuvimos que aprender todas las cosas de Mac a medida que avanzábamos.

Desde entonces solo hemos actualizado la versión de Windows.

+0

Esta es una buena historia de ejemplo para el nuevo desarrollador en mi opinión. Elija herramientas que puedan usarse en múltiples plataformas. De lo contrario, se encontrará en un aprieto una vez que los requisitos cambien y los ejecutivos también quieran el producto en Mac o Linux. – Kaspar

5

Tuvimos un problema similar. Escribimos una versión de Mac en Silverlight 3 (que admite bastante cosas sobre WPF .NET). Fue un espacio aislado, pero si esto no es un problema, puedes hacer algunas cosas buenas. Nuestra base de código ahora está en WPF y Silverlight 3 y es la misma, cuando compilamos produce las aplicaciones SL3 y Desktop.

+1

Gracias, parece una buena posibilidad (Silverlight 3 no existía cuando hice la pregunta), ¿usas los mismos archivos xaml y cs en ambas plataformas? – Nir

-1

En realidad, hay un CrossOver para usted. Otras personas que responden vista desde el punto del programador. SI yo fuera tú, instalaré CrossOver, luego instalaré .NET 3.5 dentro de CrossOver y felizmente ejecutaré el software de WPF.

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

o si lo prefiere una solución libre (pero más difícil), trate de vino.

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

+2

Esta es una buena idea desde el punto de vista del cliente: no sé si mi software se ejecuta con CrossOver pero sé que algunas personas ejecutan mi software bajo Parallels, pero desde el punto de vista de un proveedor de software (especialmente con bajo costo software) No puedo simplemente instalar CrossOver en la computadora de mi cliente (especialmente cuando CrossOver Pro es más caro que mi software) – Nir

+0

Humm yea. : D luego prueba Wine. http://davidbaumgold.com/tutorials/wine-mac/ – VOX

+0

Solo quiero aclarar la diferencia entre Parallels/VMWare y Wine/CrossOver. Parallels o VMWare es un emulador de hardware virtual que puede arrancar Windows. Emulan el hardware. Lo cual necesita para iniciar Windows (también requiere la licencia de Windows) y luego ejecutar su software en hardware emulado que ejecuta Windows. Wine/Cross Over se trata de algo que reescribió el entorno de Windows en Mac/Linux. Le dio a su programa todo lo que su programa espera de un sistema operativo Windows. Y su programa se ejecuta a velocidad nativa sin necesidad de iniciar Windows ni requerir su licencia. – VOX

4

Puede usar Parallels. Tengo nuestro software de oficina escrito en C# y WPF y la gente lo usa en Mac bajo Parallels todo el tiempo.

Como nota adicional, Parallels le permite ejecutar aplicaciones de Windows junto con aplicaciones de Mac OSX, visibles en su propia ventana en el escritorio de Mac. También permite copiar y pegar, y arrastrar y soltar entre las aplicaciones de Mac y Windows.

1

Puede probar Nevron Open Vision. Se integra en proyectos WPF, WinForms, Silverlight y MonoMac, Xamarin.Mac. Esto no es como ejecutar una aplicación WPF en la Mac, sino que requerirá que recodifique su aplicación en la plataforma NOV. Sin embargo, una vez que lo haga, su aplicación (o módulos) se ejecutará en todas estas plataformas desde una única base de código. Un buen ejemplo de este enfoque de trabajo es Nevron Writer (parte de Nevron Office). Se ejecuta en Windows, Silverlight y Mac desde una base de código 100% único.

[Disclosure: I Work for Nevron]