Esiste un modo supportato per eseguire applicazioni .NET 4.0 in modo nativo su un Mac?

10

Quali sono le opzioni supportate da Microsoft per l'esecuzione nativa del codice C # /. NET 4.0 su Mac? Sì, conosco Mono, ma tra le altre cose, è in ritardo rispetto a Microsoft. E Silverlight funziona solo con un browser web. Una soluzione di tipo VMWare non la taglierà neanche.

C'è una risposta semi-autoritaria al motivo per cui Microsoft non supporta .NET sul Mac stesso? Sembrerebbe che potrebbero Silverlight e / o acquistare Mono e essere rapidamente lì. Non c'è bisogno di Visual Studio nativo; la compilazione incrociata e il debug remoto vanno bene.

Il motivo è che dove lavoro c'è una quantità crescente di incertezza sul futuro che sta causando molto più sviluppo da fare in C ++ invece che in C #; nuovi progetti stanno scegliendo di usare C ++. Nessuno vuole dire alla direzione 18-24 mesi da oggi "mi dispiace" se il Mac (o l'iPad) diventasse un requisito. Il C ++ è visto come l'opzione più sicura, anche se (probabilmente) significa una perdita di produttività oggi.

    
posta Ðаn 15.02.2011 - 20:58
fonte

12 risposte

16

is there any semi-authoritative answer to why Microsoft just doesn't support .NET on the Mac itself?

La risposta migliore è probabilmente che non si "supporta" solo .NET sul Mac. Spendi centinaia di milioni di dollari e molti anni di porting .NET sul Mac.

Mentre alcune cose sono completamente gestite e non richiedono il porting, la maggior parte delle cose sono wrapper attorno all'API Win32 (windows, controlli, gdi +, crittografia, directory attiva, COM, servizi aziendali, accesso ai dispositivi, audio, video, codec, winforms , ecc. ecc.)

Ognuno di questi dovrebbe essere estratto nel backend e rimappato in librerie native equivalenti su OSX. Certo, non ci sarà una bella mappatura pulita, quindi devi anche scrivere hack su hack per farlo funzionare esattamente allo stesso modo.

Poi c'è il problema che queste API su OSX possono essere fragili e Apple non è molto bravo con la retrocompatibilità, quindi puoi ripristinare i tuoi hack con tutte le principali versioni (e talvolta con minori aggiornamenti e hotfix), accumulando un livello elevato costo di manutenzione.

Fondamentalmente, è una quantità enorme di denaro e lavoro per un guadagno molto scarso su una piattaforma il cui proprietario sarebbe contrario a farlo comunque. E tu non vuoi davvero spendere soldi per aiutare le persone a migrare dalla tua piattaforma su quella di un concorrente.

Quindi rimani con scelte cross-platform non perfette:

  • C ++, che richiederà ancora il porting in futuro
  • Silverlight dal browser, per il supporto Microsoft
  • Mono, che fa il lavoro per supportare un sottoinsieme sano di .NET, ma non è Microsoft
risposta data 15.02.2011 - 23:25
fonte
14

No, Silverlight è l'unica opzione Microsoft di .Net su OS X. Mono non "lag" quanto tu credi; supporta .Net 4.0 e C # 4, ad esempio. Tuttavia, i toolkit UI (WinForms e WPF) non sono ben supportati su OS X. Mono non supporta affatto WPF. Né potrebbe Microsoft senza riscrivere l'intero motore di rendering. Questo è probabilmente OK, però. Se vuoi scrivere un'app nativa per Mac, dovresti scrivere un'interfaccia utente nativa (magari usando MonoMac).

    
risposta data 15.02.2011 - 20:36
fonte
5

No. Mono è la tua migliore scommessa.

Anche altri progetti open source come DotGNU possono essere utili. link Ma nessuno di questi è supportato da MSFT.

    
risposta data 15.02.2011 - 20:36
fonte
4

Silverlight non è solo browser . Poiché la versione 3 OOB è esistita e sarebbe la strada che avrei intrapreso se una piattaforma supportata da Microsoft fosse un must.

Anche se Mono può essere ritardato, non è come rimosso dallo stack .NET come potresti pensare e non dovrebbe essere messo da parte come opzione valida.

Sul motivo per cui Microsoft non implementa l'intero stack .NET; ROI.

    
risposta data 15.02.2011 - 21:14
fonte
3

La maggior parte dei profitti di Microsoft deriva da due prodotti: Windows e Office. La compatibilità tra piattaforme fa male a Windows.

Se vuoi davvero che lo stesso codice funzioni su più piattaforme, scrivi un'app web. Però non sembra come te. "Just in case" non è una buona ragione, è scope creep.

Anche se decidi di scegliere come target Mac OS X o iOS tra 16 mesi, pensi davvero di poter prendere il tuo codice C ++ esistente e trasformarlo in una buona (o addirittura funzionale) app nativa? A meno che tu non stia lavorando a una partita a schermo intero, la risposta è no.

Risparmia tempo con C # ora, e se decidi di passare al Mac, riscrivilo in modo Mac con Objective-C e Cocoa - i tuoi utenti ti ringrazieranno

    
risposta data 15.02.2011 - 21:35
fonte
1

is there any semi-authoritative answer to why Microsoft just doesn't support .NET on the Mac itself?

Dov'è il mercato che giustificherebbe la SM che spende il tesoro per codificarlo? Per fare questo, avrebbero dovuto versare denaro serio - milioni di dollari in stipendio. Un processo in corso, come correzioni e aggiornamenti arrivano.

E per cosa? Vantarsi? Tutto ciò che ne traggono è la possibilità per le persone di abbandonare Windows per Apple ed essere in grado di eseguire ancora le proprie app.

Se qualcuno potesse trarre profitto da ciò, sarebbe Apple. Semplifica il passaggio delle persone alla loro piattaforma e agli sviluppatori (DEVELOPERS DEVELOPERS) per codificarle. Ma pensi che SJ faccia una cagata? Preferiscono inventare nuove cose per attaccare un i di. Inoltre, la maggior parte del framework è OS e le specifiche CLR sono gratuite per chiunque possa implementarle. Non puoi attaccare una NDA schifosa su nessuno di questi.

    
risposta data 15.02.2011 - 21:12
fonte
0

Potresti trovare utile il progetto MonoMac - link

Consente lo sviluppo di applicazioni Cocoa in stile mono, che possono essere implementate nell'app store Mac.

Considererei strongmente questo approccio per uno sviluppatore che non ha familiarità con Objective-C ma con .NET / Mono / Java che deve consegnare un'applicazione in uno scenario limitato dal tempo.

    
risposta data 15.02.2011 - 21:03
fonte
0

Nessuno.

Raccomando di scrivere un'applicazione C ++ multi-compilabile - potresti avere gioia in esso - o usare Ruby con wxWidgets.

Ritengo .NET una cattiva proposta per lo sviluppo multipiattaforma e la manutenzione del prodotto a lungo termine. Anche se, amico, puoi sfrecciare le app velocemente. : - /

Wish Delphi era ancora uno dei principali contendenti.

    
risposta data 15.02.2011 - 23:44
fonte
0

Se vuoi eseguire .NET nativamente su un Mac, puoi usare BootCamp per farlo (ad esempio, esegui Windows sul Mac e le tue applicazioni .NET in Windows).

Se intendevi Mac OS X anziché solo l'hardware, puoi utilizzare VMWare o Parallels per eseguire le applicazioni .NET in Windows (in emulazione) in OS X. Entrambe hanno modalità visive che consentono alla tua applicazione di apparire come se è in esecuzione solo all'interno di OS X (apparirà e si comporterà come un'applicazione Windows, ma se si sta scrivendo un'applicazione non web multipiattaforma senza un'interfaccia personalizzata per ogni sistema operativo si avrà sempre questo problema).

Otterrai la stessa quantità di "supporto" in questo modo, dal momento che stai eseguendo l'app in Windows, anche se virtualizzata. Ovviamente, chiunque esegua l'app avrà bisogno di una copia del software di virtualizzazione e di Windows e sarà disposto a sopportare un'app che non si comporta come un'applicazione OS X, ma è l'unico modo per avere "nativo" .NET in esecuzione su un Mac.

    
risposta data 16.02.2011 - 11:11
fonte
0

Dan, non penso che tu possa farlo. Tuttavia, una possibile soluzione (ancora vapourware) è quella di usare Embarcadero Rad Studio C ++ Builder, che ha un buon VCL per lo sviluppo di applicazioni visive (su cui si basa molto di .net), e sono RUMORED per avere il supporto multipiattaforma che esce nella prossima versione.

Questo sarà sviluppato su Windows, destinato a Mac o Linux. O così dice la loro tabella di marcia.

L'ambiente C ++ è ragionevole e se sviluppi contro il VCL, in teoria l'applicazione funzionerà solo sulle altre piattaforme.

Ovviamente fino a quando non è stato effettivamente spedito, resta da vedere quanto sia realmente efficace.

    
risposta data 16.02.2011 - 12:16
fonte
-2

La risposta è no.

In realtà il tuo caso sembra essere un ottimo esempio di quando non scegliere .NET.

    
risposta data 15.02.2011 - 20:40
fonte
-3

Se vuoi sviluppare per un sistema operativo, usa gli strumenti giusti. Non ci sono app veramente professionali scritte in mono per il Mac. D'altra parte ci sono molti sviluppatori non professionisti che usano molti strumenti per creare un sacco di spazzatura. Guarda le recensioni delle app mono che sono state scritte per OSX. Gli sviluppatori stanno scrivendo usando un framework incompleto violato per abbinare la piattaforma OSX. Iniziare a scrivere - se hai usato C #, l'obiettivo C è un rapido apprendimento.

Gli sviluppatori professionali per mac usano C ++, Objective C, Cocoa e Xcode. Sviluppo su diverse piattaforme e ognuna ha i propri strumenti migliori. Usa Xcode per Mac e iOS.

Proprio come una nota a margine Xcode non è Visual Studio, non è così stabile ed è una vergogna per la mela in confronto, ma funziona bene quando ci si abitua alle stranezze. È molto difficile battere gli strumenti di Microsofts, ma sono stati scritti per Windows e non per Linux, iOS, OSX, AIX ecc.

    
risposta data 01.02.2013 - 03:34
fonte

Leggi altre domande sui tag