2009-02-24 7 views
31

Vendo un'applicazione C#/WPF (targeting 3.0 in questo momento) e la gente continua a chiedermi una versione per Mac.È possibile eseguire un'applicazione C#/WPF su Mac OS X?

L'applicazione è un'applicazione d'inseguimento di tempo con una buona interfaccia grafica, non c'è logica di business che molto in un tempo di monitoraggio applicazione quindi la maggior parte della domanda è GUI - riscrittura solo l'interfaccia grafica è equivalente a riscrivere l'intera applicazione

Non ho le risorse per riscrivere l'applicazione o mantenere due basi di codice diverse, quindi ho bisogno di un modo per eseguire lo stesso codice su un Mac (so che dovrò eseguire il debug e modificare il codice, cosa intendo posso supportare solo una base di codice, non posso dividere il progetto in diversi progetti Mac e Windows: non ho il tempo di lavorare su due progetti).

Portare l'applicazione in una libreria dell'interfaccia utente multipiattaforma, in un linguaggio di programmazione diverso o in Silverlight non sono tutti rilevanti - ci vorrà troppo tempo e penso che otterrò più vendite investendo questa volta in nuove funzionalità .

Qualcuno sa di uno strumento in grado di eseguire o portare C#/WPF sul Mac?

+0

Questa è una grande * avvertenza * "domanda". –

risposta

11

Non è assolutamente possibile eseguire app WPF completa su Mac. Non sono nemmeno sicuro se ciò è possibile in Parallels. La cosa migliore che puoi fare è usare Silverlight, che in precedenza era chiamato "WPF/E" e funziona su Macintosh.

+25

Uh Parallels è una macchina virtuale ... tutto ciò che gira su Windows gira su di esso mentre gira ... windows. –

+0

Ne ho uno semplice in esecuzione su Parallels – Kalecser

+0

Ho una grande applicazione aziendale che è WPF e funziona in parallelo. – Kelly

0

Non è possibile. Ma dal momento che l'interfaccia utente è in WPF, ciò che potresti fare è trasformare XAML in qualcos'altro, ad esempio GTK#. Certo, se sei come me e usi molte funzionalità .NET 3.5, questo non ti aiuterà molto.

Un altro motivo per mantenere l'interfaccia utente in XML semplice e semplicistico con cui iniziare.

2

Si desidera una nuova funzione (supporta un'intera piattaforma diversa) e non si vuole fare alcuno sforzo. Scusa, la maggior parte delle volte non funzionerà.

Oltre al materiale .NET di base (nativo) con mono, non penso che sia possibile eseguire un'applicazione WPF in modo nativo su MacOSX.

Se pensi di poter guadagnare di più guadagnando utenti Mac. Potresti prendere in considerazione l'utilizzo di altri metodi di presentazione. A causa del tuo attuale "investimento", direi di provare Silverlight (sì, ho letto il tuo rant sul fatto di non farlo). Un'altra opzione potrebbe essere Adobe AIR/Flex.

Se si trasferisce l'applicazione in questo modo. È possibile mantenere un singolo codebase. Uno che viene eseguito su entrambe le piattaforme.

Se si desidera dedicare più tempo alle nuove funzionalità nella base di codice corrente: ignorare gli utenti Mac.

5

Eravamo in una situazione simile. Avevamo un progetto Windows funzionante e volevamo una versione per Mac.

Il nostro prodotto era diviso in due parti, una un'applicazione .Net, l'altra un'app di proiettore Director.

L'app Director dovrebbe essere facile, corretta, multipla e tutto? Beh, no, raramente è così facile, abbiamo finito con due versioni del file sorgente di Director.

Ottenere l'applicazione .Net in esecuzione necessaria utilizzando Mono per il motore sottostante, che ha funzionato bene per noi in quanto eravamo solo matrici di byte numeri crunch davvero. L'interfaccia utente dall'altra parte dovevamo riscrivere in Cocoa.Ci è costato quasi quanto fare la versione per Windows, dato che dovevamo anche imparare tutte le cose del Mac.

Da allora abbiamo aggiornato solo la versione di Windows.

+0

Questa è una bella storia di esempio per il nuovo sviluppatore secondo me. Scegli gli strumenti che possono essere utilizzati su più piattaforme. Altrimenti ti ritroverai in un sottaceto una volta che i requisiti cambiano e gli exec vorranno il prodotto su Mac o Linux. – Kaspar

5

Abbiamo avuto un problema simile. Abbiamo scritto una versione per Mac in Silverlight 3 (che supporta un sacco di cose su WPF .NET). Era in modalità sandbox ma se questo non è un problema, puoi fare delle cose carine. Il nostro codebase ora è su WPF e Silverlight 3 ed è lo stesso, quando lo compiliamo produce le app SL3 e desktop.

+1

Grazie, sembra una buona possibilità (silverlight 3 non esisteva quando ho posto la domanda), usi gli stessi file xaml e cs su entrambe le piattaforme? – Nir

-1

In realtà, c'è un CrossOver per te. Altre persone che rispondono vista dal punto del programmatore. Se fossi in te, installerò CrossOver, quindi installerò .NET 3.5 all'interno di CrossOver e gestirò felicemente il software WPF.

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

o se preferite una soluzione gratuita (ma più difficile), provare il vino.

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

+2

Questa è una buona idea dal punto di vista del cliente - Non so se il mio software funziona con CrossOver ma so che alcune persone eseguono il mio software sotto Parallels - ma - dal punto di vista del fornitore di software (specialmente con poco costoso software) Non posso semplicemente installare CrossOver sul computer del mio cliente (specialmente quando CrossOver Pro è più costoso del mio software) – Nir

+0

Humm sì. : D quindi prova Wine. http://davidbaumgold.com/tutorials/wine-mac/ – VOX

+0

Voglio solo chiarire la differenza tra Parallels/VMWare e Wine/CrossOver. Parallels o VMWare è un emulatore hardware virtuale che può avviare Windows. Emulano l'hardware. Che è necessario avviare Windows (richiede anche la licenza di Windows) e quindi eseguire il software su hardware emulato che esegue Windows. Wine/Cross over riguarda qualcosa che ha riscritto l'ambiente Windows su Mac/Linux. Ha dato al tuo programma tutto ciò che il tuo programma si aspetta da un sistema operativo Windows. E il tuo programma funziona a velocità nativa senza dover avviare Windows né richiedere la sua licenza. – VOX

4

È possibile utilizzare Parallels. Ho il nostro software per l'ufficio scritto in C# e WPF e le persone lo usano su Mac sotto Parallels per tutto il tempo.

Come ulteriore nota, Parallels consente di eseguire le applicazioni Windows parallelamente alle applicazioni Mac OSX, visibili nella propria finestra sul desktop Mac. Permette anche di copiare e incollare e trascinare e rilasciare tra le app Mac e Windows.

1

Puoi provare Nevron Open Vision. Si integra nei progetti WPF, WinForms, Silverlight e MonoMac, Xamarin.Mac. Non è come eseguire un'applicazione WPF sul Mac, ma piuttosto richiederti di ricodificare la tua applicazione sulla piattaforma NOV. Tuttavia, una volta eseguita l'applicazione (oi moduli) verranno eseguite su tutte queste piattaforme da un unico codice base. Un buon esempio di questo approccio è Nevron Writer (parte di Nevron Office). Funziona su Windows, Silverlight e Mac da una base di codice singolo al 100%.

[Disclosure: I Work for Nevron]