Чи підтримується спосіб запускати додатки .NET 4.0 на Mac?


11

Які, якщо такі є, підтримуються Microsoft опціями для запуску коду C # /. NET 4.0 на Mac? Так, я знаю про Mono, але серед іншого він відстає від Microsoft. А Silverlight працює лише у веб-браузері. Рішення типу VMWare теж не виріже.

Чи є якась напівавторитетна відповідь на те, чому Microsoft просто не підтримує .NET на самому Mac? Здавалося б, вони могли Silverlight та / або купити Mono та швидко опинитися там. Немає потреби в рідній Visual Studio; перехресне компілювання та віддалене налагодження добре.

Причина полягає в тому, що там, де я працюю, зростає невпевненість у майбутньому, що спричиняє набагато більше розробок у C ++ замість C #; абсолютно нові проекти вирішують використовувати C ++. Ніхто не хоче сказати керівництву через 18–24 місяці «вибачте», якщо Mac (або iPad) стане вимогою. C ++ вважається більш безпечним варіантом, навіть якщо це (можливо) означає сьогодні втрату продуктивності.


2
Хто підтримується ким?

Чому ви насправді не хвилюєтесь, якщо MS підтримує це? IMO має мати більше значення, якщо Apple підтримує його, якщо ви хочете націлити Mac.
альтернатива

Їхати з C ++ - це не погана ідея. Ви можете мати портативну базу коду та використовувати вбудований графічний інтерфейс на кожній платформі.
mike30

1
Для оновлення цієї публікації схоже, що MS помітили повідомлення, і вони почнуть підтримувати .NET в різних ОС, хоча не ясно, як це буде зроблено. Ви можете створювати крос-платформні програми за допомогою .NET, використовуючи NOV: nevron.com/products-open-vision.aspx (я працюю в цій компанії). Зазвичай це дозволяє кодувати в C # на Windows, а потім компілювати для Wpf, MAC, Silverlight та незабаром для iOS та Android. Існує безкоштовне (спільно) видання цього продукту, тому немає потреби жертвувати продуктивністю та дотримуватися таємниць C ++.
Боб Міланов

Відповіді:


17

Чи є якась напівавторитетна відповідь на те, чому Microsoft просто не підтримує .NET на самому Mac?

Найкраща відповідь, ймовірно, ви не «підтримуєте» .NET на Mac. Ви витрачаєте сотні мільйонів доларів і кілька років, переносячи .NET на Mac.

Хоча деякі речі повністю керуються і не потребують перенесення, більшість речей - обгортки навколо API Win32 (windows, елементи керування, gdi +, криптографія, активний каталог, COM, службові послуги, доступ до пристроїв, звук, відео, кодеки, winforms тощо) тощо).

Кожен з них повинен бути абстрагованим у складі бекенда та перестановлений на еквівалентні натільні бібліотеки на OSX. Звичайно, не буде хорошого чистого картографування, тому вам також доведеться писати хаки на хаки, щоб воно працювало точно так само.

Тоді виникає проблема, що ці API на OSX можуть бути крихкими, і Apple не дуже добре підтримує зворотну сумісність, тому ви можете переробити свої хаки з кожним основним випуском (а іноді і незначним випуском та виправленнями), що вимагає високих витрат на обслуговування.

В основному, це величезна кількість грошей і робота за дуже малий прибуток на платформі, власник якої буде проти того, щоб ти це робив у будь-якому випадку. І ви не хочете витрачати гроші, щоб допомогти людям мігрувати з власної платформи на конкурента.

Тож вам залишається не досконалий вибір крос-платформи:

  • C ++, який все одно потребуватиме перенесення в майбутньому
  • Silverlight з браузера, для підтримки Microsoft
  • Mono, яка робить роботу з підтримки здорового підмножини .NET, але це не Microsoft

5
You spend hundreds of millions of dollars and several years porting .NET to the Mac.Вибачте? Це число звучить трохи високо ... Я впевнений, що Mono-Framework (з підтримкою багатьох інших ОС) не коштував стільки.
Боббі

1
@Bobby: ось що я думаю. Mono + Silverlight здається більшістю шляху. Додайте до цього деякі P / Invoke та / або C ++ / CLI для менш основних матеріалів (Криптографія, AD тощо), і я думаю, у вас є досить розумне рішення за розумні витрати. Мій аргумент полягає в тому, що Microsoft НЕ хоче витрачати гроші, допомагаючи людям перейти на OSX; якщо цього не зробити, люди перестануть використовувати C # /. NET у Windows.
Ðаn

@Dan: Точно, Microsoft не хоче бути сумісним зі світом, інакше світ може використовувати щось інше. ;)
Боббі

15
Моно-рамка також не є повним, повністю перевіреним, задокументованим, підтримуваним рішенням. Існує різниця в тому, що "достатньо добре" для відкритого коду та якості, яку люди очікують від Microsoft. Їм легко обійшлося б у сотні мільйонів доларів, щоб зробити це на рівні, на який вимагають користувачі. Що вони могли б зробити для зменшення інвестицій - це вибрати популярну (і портативну) підмножину рамки .NET і просто зробити це. Це те, що вони вирішили зробити, вони називають це "Silverlight".
jpobst

@jpobst, але все ж схоже, що MS зробила саме це ... і багато іншого?
Ðаn

14

Ні, Silverlight - це єдиний варіант Microsoft від .Net на OS X. Mono не «відстає» стільки, як ви думаєте; він підтримує .Net 4.0 та C # 4, наприклад. Однак набори інструментів інтерфейсу (WinForms та WPF) недостатньо підтримуються в OS X. Mono взагалі не підтримує WPF. Жоден Microsoft не міг, не переписавши весь механізм візуалізації. Це, мабуть, добре, хоча. Якщо ви хочете написати нативну програму для Mac, вам слід написати власний інтерфейс (можливо, використовуючи MonoMac).


Менеджмент, здається, не дуже схильний рухатися разом із опцією Mono. І, звичайно, не підтримував .NET 4.0 в той же день, що і в Windows (або?).
Ðаn

Хіба Silverlight вже не проходить на фронті WPF (-подобний)? Так, XAML повинен бути іншим, щоб мати зовнішній вигляд Mac.
Ðаn

2
@Dan: То, як Mono рухається в ці дні, якщо ви почнете розробляти додаток для останньої версії .NET, коли Microsoft випустить його, Mono підтримає цю ж версію до моменту, коли програма буде готова до доставки.
Анон.

@Dan SL та WPF під обкладинками намагаються об'єднати якнайбільше. Існують технічні відмінності, але основними поняттями є крос-платформа.
Аарон Маківер

6
Якщо керівництво вашої компанії не бажає використовувати Mono, ви не зможете зробити настільний додаток, написане на традиційному C # 4.0, його просто так.
Рамхаунд

5

Ні. Моно - найкраща ставка.

Інші проекти з відкритим кодом, такі як DotGNU, можуть вам також служити. http://www.gnu.org/software/dotgnu/ Але жодне з них не підтримується MSFT.


4

Silverlight - це не лише браузер . Оскільки версія OOB версії 3 існує і це був би маршрут, який я б пройшов, якщо платформа, що підтримується Microsoft, є обов'язковою.

Хоча Mono може відставати, він не такий, як видалений зі стека .NET, як ви думаєте, і не повинен відкидатися як життєздатний варіант.

Що стосується того, чому Microsoft не реалізує весь стек .NET; ROI.


Але здається, що вони так близько з Silverlight ... чому б просто не закінчити роботу? Це , здавалося б , так краще для всіх , ніж Mono реверс-інжиніринг компілятор, CLR і т.д.
Ðаn

1
SL - не весь стек .NET. Виконання SL в порівнянні з усім стеком .NET - це абсолютно різні тварини.
Аарон Маківер

Так, але оскільки ви вже можете робити такі речі, як OOB, як ви пропонуєте зі SL, чому б не перенести решту (1/3? 40%?) Стека .NET? Або справді SL - це не що інше, як спроба вбити Flash?
День

@Dan Коли компанії штовхають речі в хмару ... останнє, що ви хочете зробити, - це порт стека над тим, що не може працювати в хмарі. SL може працювати у веб-переглядачах. Ви можете посперечатися із симпатіями Google та інших. Реалізація роботи в браузері реальна. Чому б у цей момент ви вирішили перенести цілий стек до ОС з <10% часткою ринку разом із віртуалізацією, що є такою поширеною в цей день та вік?
Аарон Маківер

Microsoft (можливо) має найкраще середовище розробки, доступне сьогодні для C # та .NET. Але такі компанії, як моя, будуть все більше ухилятися від цього через невизначеність навколо Mac / iPad / хмари / тощо. C ++ здається набагато безпечнішим.
День

3

Більша частина прибутку Microsoft надходить від двох продуктів - Windows та Office. Сумісність з платформою зашкодить Windows.

Якщо ви дійсно хочете того ж коду, який працює на крос-платформі, напишіть веб-додаток. Це здається не так, як ти. "Про всяк випадок" не є вагомою причиною, це повзання сфери.

Навіть якщо ви вирішите націлитись на Mac OS X або iOS через 16 місяців, чи дійсно ви думаєте, що зможете взяти наявний код C ++ і перетворити його на хороший (або навіть функціональний) рідний додаток? Якщо ви не працюєте над повноекранною грою, відповідь - ні.

Економте час із C # зараз, і якщо ви вирішите перейти на Mac, перезапишіть його на Mac-мазі за допомогою Objective-C і Cocoa - ваші користувачі будуть вам вдячні.


1
"Про всяк випадок" - реальність; ніхто не хоче сказати керівництву "ой", коли в C ++ є більш безпечний варіант.
День

1
Якщо припустити, що код інтерфейсу правильно відокремлений, буде легше перемістити код C ++ на Mac. Перепишіть інтерфейс в Objective-C, використовуючи какао, посилання на решту, і ви отримали цілу велику роботу.
Девід Торнлі

@David: звідси і проблема, що стоїть за цим питанням: більше C ++, (набагато) менше C #. Мені (справді) подобається C #!
День

Ці проблеми, пов’язані з крос-платформами, саме тому багато з нас все ще використовують Java і не переходять на C #.
Брайан Ноблеуч

1

Чи є якась напівавторитетна відповідь на те, чому Microsoft просто не підтримує .NET на самому Mac?

Де ринок, який би виправдав MS витрачати скарб, кодуючи його? Для цього їм доведеться скинути серйозні грошові кошти - мільйони доларів зарплати. Постійний процес, як виправлення та оновлення разом з цим.

А для чого? Хвастощі? Все, що вони отримують з цього, - це можливість людей виривати Windows для Apple і мати можливість ще запускати свої додатки.

Якщо хтось отримав би прибуток від цього, це була б Apple. Спростіть людину перейти на свою платформу, а розробникам (DEVELOPERS DEVELOPERS) кодувати її. Але ви думаєте, що SJ дає лайно? Вони вважають за краще вигадувати нові речі, на які я б стикався. Крім того, більшість фреймворків - це ОС, а специфікація CLR безкоштовна для всіх. Ви не можете приклеїти брудне NDA ні на що.


Частина "Майкрософт" полягає в тому, щоб люди не використовували свої найвищі інструменти в Windows. Як тут відбуваються справи, C # /. NET буде перенесено на власні додатки. Розробники, які використовують C # протягом багатьох років, знову пишуть C ++. Щодо вартості; Здавалося б, вони близько 2/3 там уже з Silverlight та / або Mono.
День

Mono - це платформа з відкритим кодом, і, поки джерело для .NET було випущено, .NET Framework НЕ є відкритим кодом. Майкрософт не зможе придбати Mono з багатьох причин, головна з них полягає в тому, що вони не мають єдиного 100% -ного додатку з відкритим кодом. Чи знаєте ви, що Silverlight є лише єдиною мовою в .NET, і причина в тому, що вона є багатоплатформою, оскільки Microsoft хотіла б, щоб вона була заміною Flash. Слід також додати, що Apple зробила рухи в бік, навіть не допустивши чогось у своїй операційній системі.
Рамхаунд

1
@Dan здається, що рішення ваших негараздів - це не "одна мова, якою керувати ними всі", а "Як ми розгортаємося платформно-агностично". Більшість людей досягають цього, вириваючи інтерфейс користувача з логіки, вбудовуючи один на платформі, а другий як послугу в інтерабусах.
Зірвано

1
@Dan У мене є рішення для цього ... Не кодуйте Mac. У мене є персональна угода Non Developer for Apple, яку я написав і підписав сам. Я б дуже ненавиджу неможливість кодування C #, і тому уникаю цього робити. Але іноді ти повинен робити те, що ти повинен робити, і якби побажання були рибами, нам доведеться придумати ще якийсь алтереатив для опису багатьох речей, які ми хочемо, але не можемо мати.
Вирвано

1
@Dan kindasorta. Вони ще не дуже торкалися робочого столу (поки що). Але я вражений тим, яка різниця становить п’ять років.
Зірвано

0

Можливо, вам буде корисний проект MonoMac - http://www.mono-project.com/MonoMac

Це дозволяє розробляти додатки какао в стилі Mono, які можна розгорнути в магазині додатків Mac.

Я настійно вважаю такий підхід для розробника, незнайомого з Objective-C, але з .NET / Mono / Java, який повинен доставляти додаток у обмеженому часом сценарії.


0

Жоден.

Я рекомендую або написати перекладений на C ++ додаток, який може бути компільований, - можливо, вам це приємно - або використовувати Ruby з wxWidgets.

Я вважаю .NET поганою пропозицією для розробки платформ і довгострокового обслуговування продукту. Хоча, чоловіче, ти можеш швидко прошивати програми. : - /

Wish Delphi все ще був головним претендентом.


1
Коли-небудь чули про Лазаря?
Happy Coder

Також коли-небудь очолює Яву?
Фернандо Гонсалес Санчес

0

Якщо ви хочете запускати .NET на комп’ютері Mac, ви можете використовувати BootCamp для цього (тобто ви запускаєте Windows на Mac та ваші .NET програми в Windows).

Якщо ви мали на увазі Mac OS X, а не лише апаратне забезпечення, тоді ви можете використовувати VMWare або Parallels для запуску програм .NET у Windows (в емуляції) в OS X. Обидва мають візуальні режими, які дозволяють вашій програмі відображатися так, ніби вона працює тільки всередині OS X (це буде виглядати і вести себе як додаток для Windows, але якщо ви пишете кросплатформенну не веб-програму без спеціального інтерфейсу для кожної ОС, у вас завжди буде така проблема).

Ви отримаєте таку ж кількість «підтримки», зробивши це, оскільки ви запускаєте додаток у Windows, хоч і віртуалізований. Звичайно, кожен, хто запускає додаток, потребує копії програмного забезпечення для віртуалізації та Windows, і буде готовий створити додаток, який не веде себе як додаток OS X - але це єдиний спосіб мати "рідну" .NET працює на Mac.


0

Ден, я не думаю, що ти можеш це зробити. Однак можливим рішенням (все-таки vapourware) є використання Embarcadero Rad Studio C ++ Builder, в якому є приємний VCL для розробки візуальних додатків (на яких базується значна частина .net), і вони РУМОВАНІ, щоб вийшла підтримка між платформами. у наступному випуску.

Це буде розроблено для Windows, націленого на Mac чи Linux. Або так говорить їх дорожня карта.

Середовище C ++ є розумним, і якщо ви розвиваєтесь проти VCL, теоретично додаток просто працюватиме на інших платформах.

Звичайно, поки її фактично не поставлено, залишається побачити, наскільки це ефективно.


-2

Відповідь - ні.

Насправді ваш випадок здається дуже хорошим прикладом, коли не вибирати .NET.


Ніхто не може передбачити майбутнє, і ніхто не хоче брати на себе "зайвий" ризик.
День

@Dan: А справа в цьому? Ви, здається, погоджуєтесь зі мною ...?
Габріель Магана

-3

Якщо ви хочете розробити для ОС, то використовуйте правильні інструменти. Немає справді професійних додатків, написаних монографічно для Mac. З іншого боку, існує безліч непрофесійних розробників, які використовують багато інструментів, створюючи багато сміття. Подивіться огляди монопрограм, написані для OSX. Розробники пишуть за допомогою неповного фреймворку, зламаного для відповідності платформі OSX. Почніть писати - якщо ви використовували C # Завдання C - це швидке навчання.

Професійні розробники для mac використовують C ++, Objective C, Cocoa та Xcode. Я розробляюсь на декількох платформах, і кожна має свої найкращі інструменти. Використовуйте Xcode для Mac та iOS.

Так само, як бічна примітка, Xcode - це не Visual Studio, він не настільки стійкий і ганьбить яблуко в порівнянні, але він добре працює, коли ти звикаєш до його химерності. Перемогти інструменти Microsofts дуже важко - але вони написані для Windows, а не для Linux, iOS, OSX, AIX тощо.


1
Чи є у вас якісь факти для резервного копіювання тверджень на кшталт "Xcode не настільки стабільний і це ганьба для Apple", тому що, виходячи з мого особистого досвіду, всі, хто використовував Xcode, полюбили його. Крім того, навіть після того, як ви висловите свою особисту думку з теми, яка здається вам не знайомою, ви навіть не знаєте, що в 2013 році насправді є рішення. Звичайно , рішення насправді Monoі , Xamarin.Macале це рішення. Поточна версія Mono майже на 100% повна реалізація .NET 4.0, їй бракує лише декількох основних функцій, які, ймовірно, ніколи не будуть перенесені (тобто WPF).
Рамхаунд
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.