Welche Optionen werden von Microsoft unterstützt, um C # /. NET 4.0-Code nativ auf dem Mac auszuführen? Ja, ich weiß über Mono Bescheid, aber unter anderem bleibt es Microsoft hinterher. Und Silverlight funktioniert nur in einem Webbrowser. Eine VMWare-Lösung wird es auch nicht schaffen.
Gibt es eine halbautorisierende Antwort darauf, warum Microsoft .NET auf dem Mac selbst einfach nicht unterstützt? Es scheint, als könnten sie Silverlight und / oder Mono kaufen und schnell da sein. Kein natives Visual Studio erforderlich; Cross-Compiling und Remote-Debugging sind in Ordnung.
Der Grund dafür ist, dass bei meiner Arbeit die Unsicherheit über die Zukunft zunimmt, was dazu führt, dass in C ++ viel mehr Entwicklungen als in C # durchgeführt werden. Brandneue Projekte entscheiden sich für C ++. Niemand möchte dem Management in 18 bis 24 Monaten "Entschuldigung" sagen, falls der Mac (oder das iPad) zur Anforderung wird. C ++ wird als sicherere Option angesehen, auch wenn dies (wohl) heute einen Produktivitätsverlust bedeutet.
Antworten:
Die beste Antwort ist wahrscheinlich, dass Sie .NET auf dem Mac nicht "nur unterstützen". Sie verbringen Hunderte Millionen Dollar und mehrere Jahre damit, .NET auf den Mac zu portieren.
Während einige Dinge vollständig verwaltet werden und keine Portierung erfordern würden, sind die meisten Dinge Wrapper um die Win32-API (Fenster, Steuerelemente, GDI +, Kryptografie, Active Directory, COM, Unternehmensdienste, Gerätezugriff, Sound, Video, Codecs, Winforms usw.) usw).
Jedes einzelne davon müsste im Backend abstrahiert und unter OSX äquivalenten nativen Bibliotheken neu zugeordnet werden. Natürlich wird es kein schönes, sauberes Mapping geben, also müssen Sie auch Hacks über Hacks schreiben, damit es genauso funktioniert.
Dann gibt es das Problem, dass diese APIs unter OSX spröde sein können und Apple die Abwärtskompatibilität nicht sehr gut beherrscht, sodass Sie Ihre Hacks bei jeder Hauptversion (und manchmal bei kleineren Versionen und Hotfixes) wiederholen können, was hohe Wartungskosten verursacht.
Grundsätzlich ist es eine enorme Menge an Geld und Arbeit für sehr wenig Gewinn auf einer Plattform, deren Besitzer sowieso dagegen wäre, dass Sie es tun. Und Sie möchten nicht wirklich Geld ausgeben, um Menschen dabei zu helfen, von Ihrer eigenen Plattform auf die eines Konkurrenten zu migrieren.
Sie haben also nicht die perfekte plattformübergreifende Auswahl:
quelle
You spend hundreds of millions of dollars and several years porting .NET to the Mac.
Entschuldigen Sie mich? Diese Zahl klingt etwas hoch ... Ich bin mir ziemlich sicher, dass das Mono-Framework (mit Unterstützung für viele weitere Betriebssysteme) nicht so viel gekostet hat.Nein, Silverlight ist die einzige Microsoft- Option von .Net unter OS X. Mono "verzögert" sich nicht so stark, wie Sie denken. Es unterstützt beispielsweise .NET 4.0 und C # 4. Die UI-Toolkits (WinForms und WPF) werden unter OS X jedoch nicht gut unterstützt. Mono unterstützt WPF überhaupt nicht. Microsoft konnte es auch nicht, ohne die gesamte Rendering-Engine neu zu schreiben. Das ist aber wahrscheinlich in Ordnung. Wenn Sie eine native Mac-App schreiben möchten, sollten Sie eine native Benutzeroberfläche schreiben (möglicherweise mit MonoMac).
quelle
Mono ist deine beste Wahl.
Andere Open-Source-Projekte wie DotGNU können Ihnen ebenfalls dienen. http://www.gnu.org/software/dotgnu/ Aber keines davon wird von MSFT unterstützt.
quelle
Silverlight ist nicht nur ein Browser . Da Version 3 OOB existiert und der Weg wäre, den ich einschlagen würde, wenn eine von Microsoft unterstützte Plattform ein Muss ist.
Obwohl Mono möglicherweise verzögert ist, wird es nicht so aus dem .NET-Stapel entfernt, wie Sie vielleicht denken, und sollte nicht als praktikable Option beiseite geworfen werden.
Warum implementiert Microsoft nicht den gesamten .NET-Stack? ROI.
quelle
Der größte Teil des Gewinns von Microsoft stammt aus zwei Produkten - Windows und Office. Plattformübergreifende Kompatibilität würde Windows schaden.
Wenn Sie wirklich möchten, dass derselbe Code plattformübergreifend ausgeführt wird, schreiben Sie eine Web-App. Es klingt aber nicht so wie du. "Nur für den Fall" ist kein guter Grund, es ist Scope Creep.
Selbst wenn Sie sich in 16 Monaten für Mac OS X oder iOS entscheiden, glauben Sie wirklich, Sie könnten Ihren vorhandenen C ++ - Code in eine gute (oder sogar funktionale) native App verwandeln? Wenn Sie nicht an einem Vollbildspiel arbeiten, lautet die Antwort Nein.
Sparen Sie jetzt Zeit mit C #, und wenn Sie sich entscheiden, auf den Mac zu wechseln, schreiben Sie ihn mit Objective-C und Cocoa auf Mac-Weise neu - Ihre Benutzer werden es Ihnen danken.
quelle
Wo ist der Markt, der es rechtfertigen würde, dass MS den Schatz ausgibt, der ihn codiert? Um dies zu tun, müssten sie ernsthaftes Geld fallen lassen - Millionen von Dollar Gehalt. Ein fortlaufender Prozess, da Korrekturen und Updates folgen.
Und wofür? Rechte prahlen? Alles, was sie daraus machen, ist die Möglichkeit für Benutzer, Windows für Apple aufzugeben und ihre Apps weiterhin ausführen zu können.
Wenn jemand davon profitieren würde, wäre es Apple. Erleichtern Sie den Benutzern den Übergang zu ihrer Plattform und den Entwicklern (DEVELOPERS DEVELOPERS) das Codieren darauf. Aber denkst du, SJ macht einen Mist? Sie würden lieber neue Sachen erfinden einen Stick i von Infront. Außerdem ist der größte Teil des Frameworks das Betriebssystem und die CLR-Spezifikationen können von jedermann kostenlos implementiert werden. Sie können keine schmutzige NDA auf irgendetwas davon kleben.
quelle
Das MonoMac-Projekt ist möglicherweise hilfreich - http://www.mono-project.com/MonoMac
Es ermöglicht die Entwicklung von Cocoa-Anwendungen im Mono-Stil, die im Mac App Store bereitgestellt werden können.
Ich würde diesen Ansatz für einen Entwickler in Betracht ziehen, der mit Objective-C nicht vertraut ist, aber mit .NET / Mono / Java, der eine Anwendung in einem zeitlich begrenzten Szenario bereitstellen muss.
quelle
Keiner.
Ich empfehle, entweder eine überkompilierbare C ++ - Anwendung zu schreiben - mögen Sie Freude daran haben - oder Ruby mit wxWidgets zu verwenden.
Ich halte .NET für ein schlechtes Angebot für die plattformübergreifende Entwicklung und die langfristige Produktwartung. Obwohl, Mann, können Sie Apps darin schnell heraussuchen. : - /
Ich wünschte, Delphi wäre immer noch ein Hauptkonkurrent.
quelle
Wenn Sie .NET nativ auf einem Mac ausführen möchten, können Sie dazu BootCamp verwenden (dh Sie führen Windows auf dem Mac und Ihre .NET-Anwendungen unter Windows aus).
Wenn Sie Mac OS X und nicht nur die Hardware gemeint haben, können Sie VMWare oder Parallels verwenden, um die .NET-Anwendungen unter Windows (in Emulation) unter OS X auszuführen. Beide verfügen über visuelle Modi, mit denen Ihre Anwendung so angezeigt wird, als würde sie nur ausgeführt innerhalb von OS X (es sieht aus und verhält sich wie eine Windows-Anwendung, aber wenn Sie eine plattformübergreifende Nicht-Webanwendung ohne benutzerdefinierte Oberfläche für jedes Betriebssystem schreiben, tritt dieses Problem immer auf).
Auf diese Weise erhalten Sie die gleiche Menge an "Support", da Sie die App unter Windows ausführen, obwohl sie virtualisiert ist. Natürlich benötigt jeder, der die App ausführt, eine Kopie der Virtualisierungssoftware und von Windows und ist bereit, eine App zu akzeptieren, die sich nicht wie eine OS X-App verhält - aber es ist die einzige Möglichkeit, "native" zu haben. .NET läuft auf einem Mac.
quelle
Dan, ich glaube nicht, dass du das kannst. Eine mögliche Lösung (immer noch Vapourware) ist jedoch die Verwendung von Embarcadero Rad Studio C ++ Builder, das über eine schöne VCL für die Entwicklung visueller Anwendungen verfügt (auf denen ein Großteil von .net basiert), und es wird gemunkelt, dass plattformübergreifende Unterstützung herauskommt in der nächsten Version.
Dies wird unter Windows entwickelt und auf Mac oder Linux ausgerichtet. Zumindest heißt es in ihrer Roadmap.
Die C ++ - Umgebung ist vernünftig und wenn Sie gegen die VCL entwickeln, funktioniert die Anwendung theoretisch nur auf den anderen Plattformen.
Natürlich bleibt abzuwarten, wie effektiv dies wirklich ist, bis es tatsächlich ausgeliefert wird.
quelle
Die Antwort ist nein.
Tatsächlich scheint Ihr Fall ein sehr gutes Beispiel dafür zu sein, wann Sie sich nicht für .NET entscheiden sollten.
quelle
Wenn Sie für ein Betriebssystem entwickeln möchten, verwenden Sie die richtigen Tools. Es gibt keine wirklich professionellen Apps, die in Mono für den Mac geschrieben wurden. Auf der anderen Seite verwenden viele nicht professionelle Entwickler viele Tools, die viel Müll erzeugen. Schauen Sie sich die Mono-App-Bewertungen an, die für OSX geschrieben wurden. Die Entwickler schreiben mit einem unvollständigen Framework, das gehackt wurde, um mit der OSX-Plattform übereinzustimmen. Beginnen Sie mit dem Schreiben - wenn Sie C # verwendet haben, ist Ziel C ein schnelles Lernen.
Professionelle Entwickler für den Mac verwenden C ++, Objective C, Cocoa und Xcode. Ich entwickle auf mehreren Plattformen und jede hat ihre eigenen besten Werkzeuge. Verwenden Sie Xcode für Mac und iOS.
Genau wie eine Randnotiz ist Xcode kein Visual Studio, es ist nicht so stabil und eine Schande für Apple im Vergleich, aber es funktioniert gut, wenn man sich an die Macken gewöhnt. Es ist sehr schwierig, Microsoft-Tools zu schlagen - aber sie wurden für Windows geschrieben, nicht für Linux, iOS, OSX, AIX usw.
quelle
Mono
undXamarin.Mac
aber es ist eine Lösung. Die aktuelle Version von Mono ist eine fast 100% vollständige Implementierung von .NET 4.0. Es fehlen nur einige wichtige Funktionen, die wahrscheinlich nie portiert werden (z. B. WPF).