Apakah ada cara yang didukung untuk menjalankan aplikasi .NET 4.0 asli di Mac?


11

Apa, jika ada, opsi yang didukung Microsoft untuk menjalankan kode C # /. NET 4.0 secara native di Mac? Ya, saya tahu tentang Mono, tetapi di antara yang lain, itu tertinggal Microsoft. Dan Silverlight hanya berfungsi di browser web. Solusi tipe VMWare tidak akan memotongnya juga.

Apakah ada jawaban semi-otoritatif mengapa Microsoft tidak mendukung .NET di Mac itu sendiri? Sepertinya mereka bisa Silverlight dan / atau membeli Mono dan dengan cepat berada di sana. Tidak perlu untuk Visual Studio asli; kompilasi silang dan debugging jarak jauh baik-baik saja.

Alasannya adalah di mana saya bekerja ada semakin banyak Ketidakpastian tentang masa depan yang menyebabkan lebih banyak pengembangan yang harus dilakukan dalam C ++ daripada C #; proyek baru memilih untuk menggunakan C ++. Tidak ada yang ingin memberi tahu manajemen 18-24 bulan dari sekarang "maaf" jika Mac (atau iPad) menjadi persyaratan. C ++ dipandang sebagai opsi yang lebih aman, bahkan jika itu (bisa dibilang) berarti hilangnya produktivitas saat ini.


2
Didukung oleh siapa?

Mengapa Anda benar-benar peduli jika MS mendukungnya? IMO seharusnya lebih penting jika Apple mendukungnya jika Anda ingin menargetkan Mac.
alternatif

Pergi dengan C ++ bukanlah ide yang buruk. Anda dapat memiliki basis kode portabel dan menggunakan GUI asli di setiap platform.
mike30

1
Untuk memperbarui posting ini, sepertinya MS telah memperhatikan dan mereka akan mulai mendukung .NET pada OS yang berbeda meskipun tidak jelas bagaimana ini akan dilakukan. Anda dapat membuat aplikasi lintas platform dengan .NET menggunakan NOV: nevron.com/products-open-vision.aspx (saya bekerja untuk perusahaan ini). Ini umumnya memungkinkan Anda untuk kode dalam C # di windows dan kemudian kompilasi untuk Wpf, MAC, Silverlight dan segera untuk iOS dan Android. Ada edisi (komunitas) gratis dari produk ini sehingga tidak perlu mengorbankan produktivitas dan tetap menggunakan C ++ yang misterius.
Bob Milanov

Jawaban:


17

apakah ada jawaban semi-otoritatif mengapa Microsoft tidak mendukung .NET di Mac itu sendiri?

Jawaban terbaik mungkin adalah Anda tidak "hanya mendukung" .NET di Mac. Anda menghabiskan ratusan juta dolar dan beberapa tahun porting .NET ke Mac.

Sementara beberapa hal dikelola sepenuhnya dan tidak memerlukan porting, kebanyakan hal adalah pembungkus di sekitar Win32 API (windows, kontrol, gdi +, kriptografi, direktori aktif, COM, layanan perusahaan, akses perangkat, suara, video, codec, winforms, dll, dll).

Setiap satu dari ini harus diabstraksi di backend dan dipetakan kembali ke perpustakaan asli yang setara di OSX. Tentu saja, tidak akan ada pemetaan bersih yang bagus, jadi Anda juga harus menulis retasan demi retasan agar fungsinya sama persis.

Lalu ada masalah bahwa API pada OSX ini bisa rapuh dan Apple tidak pandai kompatibilitas, sehingga Anda bisa mengulang hack Anda dengan setiap rilis utama (dan kadang-kadang rilis kecil dan perbaikan terbaru), menghabiskan biaya perawatan yang tinggi.

Pada dasarnya, ini adalah jumlah uang yang luar biasa dan bekerja untuk mendapatkan sangat sedikit pada platform yang pemiliknya akan menentang Anda melakukannya. Dan Anda tidak benar-benar ingin menghabiskan uang untuk membantu orang bermigrasi dari platform Anda sendiri ke pesaing.

Jadi Anda dibiarkan dengan pilihan lintas platform yang tidak sempurna:

  • C ++, yang masih membutuhkan porting di masa depan
  • Silverlight dari browser, untuk dukungan Microsoft
  • Mono, yang berfungsi mendukung subset .NET yang sehat, tetapi bukan Microsoft

5
You spend hundreds of millions of dollars and several years porting .NET to the Mac.Permisi? Angka itu terdengar agak tinggi ... Saya cukup yakin Mono-Framework (dengan dukungan untuk lebih banyak OS) tidak memerlukan biaya banyak.
Bobby

1
@ Bobby: itulah yang saya pikirkan. Mono + Silverlight tampaknya sebagian besar jalan di sana. Tambahkan ke beberapa P / Invoke dan / atau C ++ / CLI untuk hal-hal yang kurang umum (Kriptografi, AD, dll) dan saya pikir Anda akan memiliki solusi yang cukup masuk akal dengan biaya yang masuk akal. Argumen saya adalah bahwa Microsoft TIDAK ingin menghabiskan uang untuk membantu orang menggunakan OSX; jika tidak, orang akan berhenti menggunakan C # /. NET di Windows.
Ðаn

@Dan: Tepat, Microsoft tidak ingin kompatibel dengan dunia, kalau tidak dunia bisa menggunakan sesuatu yang berbeda. ;)
Bobby

15
Kerangka kerja Mono juga bukan solusi yang lengkap, sepenuhnya diuji, didokumentasikan, didukung. Ada perbedaan dalam hal "cukup baik" untuk open source dan kualitas yang diharapkan orang dari Microsoft. Akan dengan mudah menghabiskan biaya ratusan juta dolar bagi mereka untuk melakukannya ke tingkat yang diinginkan pengguna. Apa yang bisa mereka lakukan untuk mengurangi investasi adalah dengan memilih subset populer (dan portabel) dari framework .NET dan lakukan saja. Itulah yang mereka pilih untuk lakukan, mereka menyebutnya "Silverlight".
jpobst

@ jpobst tetapi sepertinya MS telah melakukan hal itu ... dan banyak lagi?
23аn

14

Tidak, Silverlight adalah satu-satunya opsi Microsoft dari. Net di OS X. Mono tidak "lag" sebanyak yang Anda pikirkan; ini mendukung. Net 4.0 dan C # 4, misalnya. Namun, toolkit UI (WinForms dan WPF) tidak didukung dengan baik pada OS X. Mono tidak mendukung WPF sama sekali. Microsoft juga tidak dapat menulis ulang seluruh mesin rendering. Itu mungkin baik-baik saja. Jika Anda ingin menulis aplikasi Mac asli, Anda harus menulis UI asli (mungkin menggunakan MonoMac).


Manajemen tampaknya tidak terlalu setuju dengan opsi Mono. Dan itu tentu saja tidak mendukung .NET 4.0 pada hari yang sama seperti pada Windows (atau?).
Ðаn

Bukankah Silverlight sudah sebagian besar jalan di depan WPF (-seperti)? Ya, XAML harus berbeda untuk mendapatkan tampilan dan nuansa Mac.
Ðаn

2
@Dan: Cara Mono bergerak belakangan ini, jika Anda mulai mengembangkan aplikasi untuk versi .NET terbaru ketika Microsoft merilisnya, Mono akan mendukung versi yang sama pada saat aplikasi siap dikirimkan.
Anon.

@Dan SL dan WPF di bawah sampul berusaha menggabungkan sebanyak mungkin. Ada perbedaan teknis tetapi konsep dasarnya adalah lintas platform.
Aaron McIver

6
Jika manajemen perusahaan Anda tidak mau menggunakan Mono maka Anda tidak akan dapat membuat aplikasi desktop yang ditulis dalam C # 4.0 tradisional yang sesederhana itu.
Ramhound


4

Silverlight bukan hanya browser . Karena versi 3 OOB telah ada dan akan menjadi rute yang akan saya ambil jika platform yang didukung Microsoft adalah harus dimiliki.

Meskipun Mono mungkin ketinggalan, itu tidak dihapus dari tumpukan .NET seperti yang Anda pikirkan dan tidak boleh diabaikan sebagai opsi yang layak.

Seperti mengapa Microsoft tidak mengimplementasikan seluruh tumpukan .NET; ROI.


Tapi sepertinya mereka sangat dekat dengan Silverlight ... kenapa tidak selesaikan saja pekerjaannya? Yang akan tampak jauh lebih baik untuk semua orang dari Mono reverse-engineering compiler, CLR, dll
Ðаn

1
SL bukan seluruh tumpukan .NET. SL runtime versus seluruh .NET stack adalah hewan yang sama sekali berbeda.
Aaron McIver

Ya, tetapi karena Anda sudah dapat melakukan hal-hal seperti OOB seperti yang Anda sarankan dengan SL, mengapa tidak port sisanya (1/3? 40%?) Dari tumpukan .NET? Atau apakah SL benar-benar tidak lebih dari upaya untuk membunuh Flash?
Ðаn

@Dan Ketika perusahaan mendorong sesuatu ke cloud ... hal terakhir yang ingin Anda lakukan adalah port stack yang tidak dapat berjalan di cloud. SL dapat berjalan melintasi peramban. Anda dapat berdebat dengan orang-orang seperti Google dan orang lain bahwa dorongan untuk bekerja di dalam browser adalah nyata. Mengapa saat ini Anda memilih untuk mem-port seluruh tumpukan ke OS dengan <10% pangsa pasar bersama dengan virtualisasi yang begitu lazim di zaman sekarang ini?
Aaron McIver

Microsoft (bisa dibilang) memiliki lingkungan pengembangan terbaik yang tersedia saat ini dengan C # dan .NET. Tetapi perusahaan seperti milik saya akan semakin menghindar darinya karena Ketidakpastian seputar Mac / iPad / cloud / dll. C ++ tampaknya jauh lebih aman.
Ðаn

3

Sebagian besar keuntungan Microsoft berasal dari dua produk - Windows dan Office. Kompatibilitas lintas platform akan merugikan Windows.

Jika Anda benar-benar menginginkan kode yang sama menjalankan lintas platform, tulis aplikasi web. Itu tidak terdengar seperti kamu. "Berjaga-jaga" bukan alasan yang baik, itu cakupannya merayap.

Bahkan jika Anda memutuskan untuk menargetkan Mac OS X atau iOS dalam 16 bulan dari sekarang, apakah Anda benar-benar berpikir Anda dapat mengambil kode C ++ yang ada dan mengubahnya menjadi aplikasi asli yang baik (atau bahkan fungsional)? Kecuali jika Anda mengerjakan game layar penuh, jawabannya tidak.

Hemat waktu dengan C # sekarang, dan jika Anda memutuskan untuk pindah ke Mac, tulis ulang dengan cara Mac dengan Objective-C dan Cocoa - pengguna Anda akan berterima kasih.


1
"Berjaga-jaga" adalah kenyataannya; tidak ada yang ingin memberi tahu manajemen "oops" ketika ada opsi yang lebih aman di C ++.
Ðаn

1
Dengan asumsi kode antarmuka dipisahkan dengan benar, akan lebih mudah untuk memindahkan kode C ++ ke Mac. Tulis ulang antarmuka di Objective-C menggunakan Kakao, taut ke yang lain, dan Anda sudah menyelesaikan banyak pekerjaan.
David Thornley

@ David: dan karenanya masalah di balik pertanyaan ini: lebih banyak C ++, (banyak) lebih sedikit C #. Saya (sangat) suka C #!
Ðаn

Kekhawatiran lintas-platform di sini adalah mengapa banyak dari kita masih menggunakan Java dan tidak pindah ke C #.
Brian Knoblauch

1

apakah ada jawaban semi-otoritatif mengapa Microsoft tidak mendukung .NET di Mac itu sendiri?

Di mana pasar yang akan membenarkan pengeluaran MS untuk mengkodekan harta karun itu? Untuk melakukan ini, mereka harus menjatuhkan uang tunai yang serius - jutaan dolar dalam gaji. Proses yang berkelanjutan, seiring perbaikan dan pembaruan datang.

Dan untuk apa? Hak membual? Yang mereka dapatkan adalah kemampuan orang untuk membuang Windows untuk Apple dan tetap dapat menjalankan aplikasi mereka.

Jika ada yang mendapat untung dari melakukan ini, itu adalah Apple. Mempermudah orang untuk beralih ke platform mereka dan untuk pengembang (DEVELOPERS DEVELOPERS) untuk membuat kode di atasnya. Tetapi apakah Anda pikir SJ memberikan omong kosong? Mereka lebih suka menciptakan barang baru untuk menempel di depan saya . Selain itu, sebagian besar kerangka kerja adalah OS dan spesifikasi CLR gratis bagi siapa saja untuk diimplementasikan. Anda tidak dapat menempel NDA kotor di semua itu.


Bagian dari "apa yang ada di dalam untuk Microsoft" adalah untuk membuat orang menggunakan alat-alat terbaik mereka di Windows. Cara yang terjadi di sekitar sini, C # /. NET akan diturunkan ke aplikasi in-house. Pengembang yang telah menggunakan C # selama bertahun-tahun menulis lagi C ++. Adapun biaya; sepertinya mereka sekitar 2/3 sudah ada dengan Silverlight dan / atau Mono.
Ðаn

Mono adalah platform open source, dan sementara sumber untuk. NET telah dirilis, .NET Framework BUKAN open source. Microsoft tidak akan dapat membeli Mono, karena berbagai alasan, yang utama adalah mereka tidak memiliki aplikasi open source 100% tunggal. Apakah Anda tahu bahwa Silverlight hanya satu bahasa dalam. NET dan alasannya multi-platform karena Microsoft ingin itu menjadi pengganti Flash. Saya juga harus menambahkan bahwa Apple telah membuat gerakan tangan ke arah yang bahkan tidak memungkinkan sesuatu pada sistem operasi mereka.
Ramhound

1
@Dan terdengar seperti solusi untuk kesengsaraan Anda bukan "satu bahasa untuk menguasai semuanya" tetapi "Bagaimana cara kami menerapkan platform-agnostik." Kebanyakan orang melakukan ini dengan memecah UI dari logika, menanamkan satu pada basis per-platform dan yang lainnya sebagai layanan pada inertubes.
Ripped Off

1
@Dan saya punya solusi untuk itu ... Jangan kode untuk Mac. Saya memiliki Perjanjian Non Pengembangan untuk Apple pribadi yang saya tulis dan tandatangani sendiri. Saya akan sangat benci tidak bisa kode C #, dan karenanya hindari melakukannya. Tetapi kadang-kadang Anda harus melakukan apa yang harus Anda lakukan, dan jika keinginan adalah ikan, kita harus memikirkan aliterasi lain untuk menggambarkan banyak hal yang kita inginkan tetapi tidak bisa miliki.
Dirobek

1
@Dan kindasorta. Mereka belum benar-benar menyentuh desktop (belum). Tapi saya kagum dengan perbedaan yang dibuat lima tahun.
Merobek

0

Anda mungkin menemukan proyek MonoMac bermanfaat - http://www.mono-project.com/MonoMac

Hal ini memungkinkan untuk mengembangkan aplikasi Kakao gaya Mono, yang dapat digunakan untuk Mac App store.

Saya akan sangat mempertimbangkan pendekatan ini untuk pengembang yang tidak terbiasa dengan Objective-C tetapi dengan .NET / Mono / Java yang harus mengirimkan aplikasi dalam skenario yang dibatasi waktu.


0

Tidak ada

Saya sarankan untuk menulis aplikasi C ++ yang dapat dikompilasi silang - semoga Anda menyukainya - atau menggunakan Ruby dengan wxWidgets.

Saya menganggap .NET proposisi yang buruk untuk pengembangan lintas platform dan pemeliharaan produk jangka panjang. Meskipun, kawan, Anda bisa cepat-cepat keluar aplikasi di dalamnya. : - /

Wish Delphi masih menjadi pesaing utama.


1
Pernah mendengar tentang Lazarus?
Selamat Coder

Juga, pernahkah kepala Jawa?
Fernando Gonzalez Sanchez

0

Jika Anda ingin menjalankan .NET secara native di Mac, Anda dapat menggunakan BootCamp untuk melakukan ini (mis. Anda menjalankan Windows di Mac, dan aplikasi .NET di Windows).

Jika Anda bermaksud Mac OS X daripada hanya perangkat keras, maka Anda dapat menggunakan VMWare atau Parallels untuk menjalankan aplikasi .NET di Windows (dalam emulasi) di OS X. Keduanya memiliki mode visual yang memungkinkan aplikasi Anda muncul seolah-olah hanya berjalan dalam OS X (itu akan terlihat dan berperilaku seperti aplikasi Windows, tetapi jika Anda menulis aplikasi non-web lintas-platform tanpa antarmuka khusus untuk setiap OS Anda akan selalu memiliki masalah itu).

Anda akan mendapatkan jumlah "dukungan" yang sama dengan melakukan ini, karena Anda menjalankan aplikasi di Windows, meskipun tervirtualisasi. Tentu saja, siapa pun yang menjalankan aplikasi akan memerlukan salinan perangkat lunak virtualisasi, dan Windows, dan bersedia untuk memasang aplikasi yang tidak berperilaku seperti aplikasi OS X - tetapi itu adalah satu-satunya cara untuk memiliki "asli" .NET berjalan di Mac.


0

Dan, kurasa kau tidak bisa melakukan ini. Namun, solusi yang mungkin (masih vapourware) adalah dengan menggunakan Embarcadero Rad Studio C ++ Builder, yang memiliki VCL yang bagus untuk mengembangkan aplikasi visual (yang menjadi dasar banyak .net), dan mereka DIBANGUNKAN untuk memiliki dukungan lintas-platform yang keluar dalam rilis berikutnya.

Ini akan dikembangkan di windows, target ke Mac atau Linux. Atau begitulah peta jalan mereka mengatakan.

Lingkungan C ++ masuk akal dan jika Anda mengembangkan terhadap VCL maka secara teori aplikasi hanya akan bekerja pada platform lain.

Tentu saja sampai itu benar-benar dikirim masih harus dilihat seberapa efektif ini sebenarnya.


-2

Jawabannya adalah tidak.

Sebenarnya kasus Anda tampaknya menjadi contoh yang sangat baik ketika tidak memilih .NET.


Tidak ada yang bisa memprediksi masa depan dan tidak ada yang mau mengambil risiko "tidak semestinya".
Ðаn

@Dan: Dan intinya adalah? Anda sepertinya setuju dengan saya ...?
Gabriel Magana

-3

Jika Anda ingin mengembangkan OS maka gunakan alat yang tepat. Tidak ada aplikasi profesional yang ditulis dalam mono untuk Mac. Ada di sisi lain banyak pengembang non-profesional yang menggunakan banyak alat menciptakan banyak sampah. Lihatlah ulasan aplikasi mono yang telah ditulis untuk OSX. Pengembang menulis menggunakan kerangka kerja tidak lengkap yang diretas untuk mencocokkan platform OSX. Mulailah menulis - jika Anda telah menggunakan C # Objective C adalah pembelajaran cepat.

Pengembang profesional untuk mac menggunakan C ++, Objective C, Cocoa, dan Xcode. Saya mengembangkan pada beberapa platform dan masing-masing memiliki alat terbaik mereka sendiri. Gunakan Xcode untuk Mac dan iOS.

Sama seperti catatan Xcode bukan Visual Studio itu tidak stabil dan memalukan untuk apel dibandingkan, tetapi bekerja dengan baik ketika Anda terbiasa dia quirks. Sangat sulit untuk mengalahkan alat Microsoft - tetapi mereka ditulis untuk Windows bukan Linux, iOS, OSX, AIX dll.


1
Apakah Anda memiliki fakta untuk membuat cadangan pernyataan seperti "Xcode tidak stabil dan memalukan bagi Apple" karena berdasarkan pengalaman pribadi saya, semua orang yang telah menggunakan Xcode menyukainya. Selain itu bahkan setelah Anda menyatakan pendapat pribadi tentang suatu hal yang tampaknya tidak Anda kenal, Anda bahkan tidak menyadari bahwa pada tahun 2013, sebenarnya ada solusi. Tentu saja solusinya sebenarnya Monodan Xamarin.Mactetapi itu adalah solusi. Versi Mono saat ini hampir 100% implementasi penuh dari .NET 4.0. Ia hanya kekurangan beberapa fitur utama yang kemungkinan tidak akan pernah diangkut (yaitu WPF).
Ramhound
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.