Macでネイティブに.NET 4.0アプリケーションを実行するためのサポートされている方法はありますか?


11

MacでネイティブにC#/。NET 4.0コードを実行するためにMicrosoftがサポートしているオプションがある場合はどうなりますか?はい、私はMonoについて知っていますが、とりわけMicrosoftよりも遅れています。また、SilverlightはWebブラウザーでのみ機能します。VMWareタイプのソリューションもそれを削減しません。

MicrosoftがMac自体で.NETをサポートしていない理由について、半権威的な答えはありますか?SilverlightやMonoを購入してすぐに利用できるように思えます。ネイティブのVisual Studioは必要ありません。クロスコンパイルとリモートデバッグは問題ありません。

その理由は、私が仕事をしていると、将来についての不確実性が高まり、C#ではなくC ++でより多くの開発が行われるようになるためです。まったく新しいプロジェクトがC ++の使用を選択しています。Mac(またはiPad)が必要になった場合、誰も今から18〜24か月後に "申し訳ありません"と経営陣に伝えたくありません。C ++は、(おそらく)今日の生産性の低下を意味するとしても、より安全なオプションと見なされています。


2
誰がサポートしますか?

MSがサポートしているかどうかを実際に気にしている理由 IMOあなたがMacをターゲットにしたいのであれば、Appleがそれをサポートしているなら、それはもっと重要であるべきです。
代替

C ++を使用することは悪い考えではありません。移植可能なコードベースがあり、各プラットフォームでネイティブGUIを使用できます。
mike30 2013

1
この投稿を更新するために、MSが注目しており、異なるOSで.NETのサポートを開始するようですが、これがどのように行われるかは不明です。NOVを使用して.NETでクロスプラットフォームアプリケーションを作成できます:nevron.com/products-open-vision.aspx(私はこの会社で働いています)。通常、WindowsでC#でコーディングしてから、Wpf、MAC、Silverlight用にコンパイルし、まもなくiOSおよびAndroid用にコンパイルできます。この製品の無料(コミュニティ)エディションがあるため、生産性を犠牲にして難解なC ++を使用する必要はありません。
Bob Milanov、2015

回答:


17

MicrosoftがMac自体で.NETをサポートしていない理由について、半権威的な答えはありますか?

最良の答えは、おそらくMacで.NETを「サポートするだけ」ではないということです。あなたは数億ドルと数年かけて.NETをMacに移植しています。

一部は完全に管理されており、移植が不要ですが、ほとんどのものはWin32 API(windows、controls、gdi +、暗号化、Active Directory、COM、エンタープライズサービス、デバイスアクセス、サウンド、ビデオ、コーデック、winformsなど)のラッパーです。等)。

これらすべてをバックエンドで抽象化し、OSX上の同等のネイティブライブラリに再マッピングする必要があります。もちろん、すっきりとしたきれいなマッピングはありません。そのため、ハックをまったく同じように機能させるには、ハックを作成する必要があります。

次に、OSX上のこれらのAPIが不安定になる可能性があり、Appleは下位互換性があまり良くないという問題があります。そのため、メジャーリリース(および場合によってはマイナーリリースとホットフィックス)ごとにハックをやり直し、高いメンテナンスコストをかけます。

基本的に、それは途方もない金額であり、とにかくそれを行うことに反対する所有者のプラットフォームではほとんど利益を得ることができません。また、人々があなたのプラットフォームから競合他社のプラットフォームに移行するのを助けるためにお金を使いたくないのです。

したがって、完全ではないクロスプラットフォームの選択肢が残ります。

  • C ++、将来的にも移植が必要になります
  • Microsoftサポート用のブラウザ外のSilverlight
  • Monoは、.NETの健全なサブセットをサポートするために機能しますが、Microsoftではありません

5
You spend hundreds of millions of dollars and several years porting .NET to the Mac.すみません?その数は少し高く聞こえます...(もっと多くのOSをサポートする)Mono-Frameworkがそれほどコストがかからなかったと確信しています。
ボビー

1
@ボビー:それは私が考えていることです。Mono + Silverlightがほとんどの方法です。それに加えて、主流ではないもの(暗号化、ADなど)のP / InvokeやC ++ / CLI、あるいはその両方を追加すると、妥当なコストでかなり合理的なソリューションが得られると思います。私の主張は、Microsoftは人々がOSXに乗り込むのを助けるためにお金を使いたいと思っているということです。そうでない場合、WindowsでのC#/。NETの使用は中止されます。
2011

@Dan:まさに、Microsoftは世界との互換性を望んでいません。;)
ボビー

15
Monoフレームワークも完全にテストされ、文書化され、サポートされているソリューションではありません。オープンソースにとって「十分」なものと、人々がマイクロソフトに期待する品質には違いがあります。ユーザーが要求するレベルでそれを行うには、数億ドルの費用がかかります。投資を減らすために彼らができることは、.NETフレームワークの人気のある(そして移植可能な)サブセットを選び、それを実行することです。それは彼らがすることを選んだものです、彼らはそれを「シルバーライト」と呼びます。
jpobst

@jpobstですが、MSはそれだけを実行しているようです...
2017

14

いいえ、SilverlightはOS X上の.Netからの唯一のMicrosoftオプションです。Monoはあなたが思うほど「遅れ」ません。たとえば、.Net 4.0とC#4をサポートしています。ただし、UIツールキット(WinFormsおよびWPF)はOS Xでは十分にサポートされていません。MonoはWPFをまったくサポートしていません。Microsoftも、レンダリングエンジン全体を書き直さなければなりませんでした。しかし、それはおそらく大丈夫です。ネイティブのMacアプリを作成する場合は、ネイティブのUI(おそらくMonoMacを使用)を作成する必要があります。


経営陣は、Monoオプションを採用する傾向はあまりありません。そして、確かにWindowsと同じ日に.NET 4.0をサポートしていませんでした(または?)。
2011

Silverlightは、WPF(のような)前面にあるほとんどの方法ではありませんか?はい、Macのルックアンドフィールを実現するには、XAMLを変える必要があります。
2011

2
@ダン:Monoの最近の動き、Microsoftがリリースしたときに最新バージョンの.NET用のアプリの開発を開始した場合、Monoはアプリの出荷準備が整うまでに同じバージョンをサポートします。
アノン。

隠された@Dan SLとWPFは、可能な限りマージしようとしています。技術的な違いはありますが、基本的な概念はクロスプラットフォームです。
アーロン・マキーバー、2011

6
会社の経営陣がMonoを使用したくない場合、従来のC#4.0で記述されたデスクトップアプリケーションをそれほど単純にすることはできません。
ラムハウンド2011


4

Silverlightはブラウザだけではありません。バージョン3のOOBが存在しているので、Microsoftがサポートするプラットフォームが必須の場合、私はそのルートになるでしょう。

Monoは遅れる可能性がありますが、考えられるほど.NETスタックから削除されるわけではないため、実行可能なオプションとして除外するべきではありません。

Microsoftが.NETスタック全体を実装していない理由について。ROI。


しかし、彼らはSilverlightに非常に近いようです...なぜ仕事を終えないのですか?これは、コンパイラなど、CLR、リバースエンジニアリングモノよりも、みんなのためにそんなに良く思われる
Ðаn

1
SLは.NETスタック全体ではありません。SLランタイムと.NETスタック全体はまったく異なります。
アーロン・マキーバー、2011

はい。ただし、SLで提案されているようにOOBのようなことを既に実行できるので、.NETスタックの残りの部分(1/3?40%?)を移植しないのはなぜですか?それともSLは本当にFlashを殺そうとすることなのでしょうか?
2011

@ダン企業がクラウドに物事をプッシュしているとき...あなたがしたい最後のことは、クラウドで実行できないスタックを移植することです。SLはブラウザー間で実行できます。あなたはグーグルや他の人たちと同じように、ブラウザ内での作業へのプッシュが現実のものであると主張することができます。なぜ現時点で、スタック全体を10%未満の市場シェアでOSに移植することを選ぶのでしょうか?
Aaron McIver、2011

Microsoftは(おそらく)今日、C#と.NETで利用できる最高の開発環境を持っています。しかし、私のような企業は、Mac / iPad /クラウドなどを取り巻く不確実性のために、ますますそれを避けています。C ++の方がはるかに安全です。
2011

3

Microsoftの利益のほとんどは、WindowsとOfficeの2つの製品から得られます。クロスプラットフォームの互換性はWindowsに悪影響を及ぼします。

同じコードをクロスプラットフォームで実行したい場合は、Webアプリを作成してください。それはあなたがそうするようには聞こえません。「万一に備えて」というのは正当な理由ではありません。それはスコープクリープです。

今から16か月後にMac OS XまたはiOSをターゲットにすることを決定した場合でも、既存のC ++コードを使用して、それを優れた(または機能的な)ネイティブアプリに変えることができると本当に思いますか?フルスクリーンのゲームに取り組んでいない限り、答えはノーです。

今すぐC#で時間を節約し、Macに移行する場合は、Objective-CとCocoaを使用してMacで書き直してください。ユーザーに感謝します。


1
「念のため」が現実です。C ++でより安全なオプションがあるときに、管理者に「おっと」と伝えたいと思う人はいません。
2011

1
インターフェイスコードが適切に分離されていると仮定すると、C ++コードをMacに移動する方が簡単です。Cocoaを使用してObjective-Cのインターフェースを書き直し、残りの部分にリンクしてください。
David Thornley、2011

@David:したがって、この質問の背後にある問題:C ++の増加、(はるかに)C#の減少。私は(本当に)C#が好きです!
2011

ここにあるこれらのクロスプラットフォームの懸念が、私たちの多くがまだJavaを使用していて、C#に移行していない理由です。
Brian Knoblauch、2011

1

MicrosoftがMac自体で.NETをサポートしていない理由について、半権威的な答えはありますか?

MSがトレジャーコーディングに費やすことを正当化する市場はどこですか これを行うために、彼らは深刻な現金、何百万ドルもの給与を落とさなければなりません。修正と更新が行われるときの進行中のプロセス。

そして何のために?自慢する権利?彼らがそれから得るすべては人々がAppleのためにWindowsを捨ててそして彼らのアプリをまだ実行することができる能力である。

もし誰かがこれから利益を得るなら、それはアップルだろう。人々がプラットフォームに簡単に移行できるようにし、開発者(DEVELOPERS DEVELOPERS)が簡単にコードを記述できるようにします。しかし、あなたはSJががらくたを与えると思いますか?彼らはむしろ私を前に置くための新しいものを発明したいのです。さらに、フレームワークのほとんどはOSであり、CLR仕様は誰でも実装できます。不潔なNDAを貼り付けることはできません。


「Microsoftの機能」の一部は、人々がWindowsで一流のツールを使用し続けることです。ここでの状況は、C#/。NETは社内アプリに委ねられます。何年もC#を使用してきた開発者は、再びC ++を作成しています。コストは・・・ SilverlightやMonoの場合、すでに2/3ほどあるようです。
2011

Monoはオープンソースプラットフォームであり、.NETのソースがリリースされていますが、.NET Frameworkはオープンソースではありません。MicrosoftはMonoを購入できなくなります。多くの理由で、主な理由は、100%オープンソースアプリケーションが1つもないことです。Silverlightが.NET内の単一の言語にすぎないことと、MicrosoftがFlashの代わりにそれを使用したいためにマルチプラットフォームである理由を知っていますか。また、Appleがオペレーティングシステムでこれを許可しないように手を動かしたことも付け加えておきます。
ラムハウンド2011

1
@Danは、あなたの悩みの解決策は「すべてを統治する1つの言語」ではなく、「プラットフォームに依存しない方法でどのように展開するか」のように聞こえます。ほとんどの人は、UIをロジックから切り離し、1つをプラットフォームごとに、もう1つをサービスとしてインナーチューブに埋め込むことでこれを実現しています。
2011

1
@Dan解決策があります... Mac用にコーディングしないでください。私が書いた個人用のApple以外の開発契約は自分​​で締結したものです。C#をコーディングできないのはまったく嫌なので、そうすることは避けます。しかし、時々あなたは自分がやらなければならないことをしなければなりません、そして願いが魚だったら、私たちは私たちが欲しいが持ってはいけない多くのことを説明するために他のいくつかのことを考えなければなりません。
2011

1
@Dan kindasorta。彼らは(まだ)実際にはデスクトップに触れていません。しかし、私は5年の違いに驚かされます。
2017

0

MonoMacプロジェクトが便利な場合があります-http ://www.mono-project.com/MonoMac

Mac App Storeに展開できるCocoaアプリケーションMonoスタイルの開発を可能にします。

私はこのアプローチを、Objective-Cに不慣れであるが、時間制限のあるシナリオでアプリケーションを提供する必要がある.NET / Mono / Javaに不慣れな開発者に強く検討します。


0

無し。

私はクロスコンパイル可能なC ++アプリケーションを書くことをお勧めします-あなたがそれに喜びを持っているかもしれません-またはwxWidgetsでRubyを使用します。

私は.NETをクロスプラットフォーム開発と長期的な製品保守のための悪い命題と考えています。ただし、アプリをすぐに使いこなすことができます。:-/

ウィルデルファイは依然として主要な候補でした。


1
ラザロを聞いたことがありますか?
Happy Coder

また、Javaの責任者は?
フェルナンドゴンザレスサンチェス

0

Macでネイティブに.NETを実行する場合は、BootCampを使用してこれを実行できます(つまり、MacでWindowsを実行し、Windowsで.NETアプリケーションを実行します)。

ハードウェアだけでなくMac OS Xの場合は、VMWareまたはParallelsを使用して、OS XのWindowsで.NETアプリケーションを(エミュレーションで)実行できます。どちらにも、アプリケーションが実行しているように見えるようにするビジュアルモードがあります。 OS X内(Windowsアプリケーションのように見え、動作しますが、各OSのカスタムインターフェイスなしでクロスプラットフォームの非Webアプリケーションを作成している場合は、常にその問題が発生します)。

仮想化されているにもかかわらず、Windowsでアプリを実行しているため、これを行うことで同じ量の「サポート」が得られます。もちろん、アプリを実行している人は誰でも仮想化ソフトウェアのコピーとWindowsを必要とし、OS Xアプリのように動作しないアプリに我慢して進んでいきますが、これは「ネイティブ」にする唯一の方法ですMacで実行されている.NET。


0

ダン、あなたにはこれができないと思います。ただし、可能な解決策(まだ蒸気プログラム)は、ビジュアルアプリケーションの開発に優れたVCLを備えたEmbarcadero Rad Studio C ++ Builder(.netの大部分に基づいています)を使用することです。次のリリースで。

これはWindowsで開発され、MacまたはLinuxをターゲットにします。またはそう彼らのロードマップは言う。

C ++環境は妥当であり、VCLを使用して開発する場合、理論的にはアプリケーションは他のプラットフォームで動作します。

もちろん、実際に出荷されるまでは、これが実際にどれほど効果的であるかは不明です。


-2

答えはいいえだ。

実際、あなたのケースは、.NETを選択しない場合の非常に良い例のようです。


誰も未来を予測することはできず、だれも「不当な」リスクを負いたくないのです。
2011

@ダン:そしてポイントは?あなたは私に同意しているようです...?
ガブリエルマガナ

-3

OS向けに開発したい場合は、適切なツールを使用してください。Mac用のモノで書かれた本当にプロフェッショナルなアプリはありません。一方、多くのゴミを作成する多くのツールを使用する非専門家の開発者がたくさんいます。OSX用に書かれたモノのアプリレビューを見てください。開発者は、OSXプラットフォームに一致するようにハッキングされた不完全なフレームワークを使用して書いています。書き始める-C#Objective Cを使用したことがある場合、簡単に学ぶことができます。

Macのプロの開発者は、C ++、Objective C、Cocoa、Xcodeを使用しています。私はいくつかのプラットフォームで開発しており、それぞれに独自の最高のツールがあります。MacおよびiOSのXcodeを使用します。

XcodeがVisual Studioではないのと同じように、Xcodeは安定性が低く、アップルに比べて不名誉ですが、彼の癖に慣れるとうまく機能します。Microsoftのツールを打ち負かすことは非常に困難ですが、それらはLinux、iOS、OSX、AIXなどではなくWindows用に作成されました。


1
私の個人的な経験に基づいて、Xcodeを使用したすべての人がXcodeを気に入っていたので、「Xcodeはそれほど安定しておらず、Appleにとって不名誉です」のような声明をバックアップする事実はありますか。あなたがそれについてあなたが慣れていないように見える主題についてあなたの個人的な意見を表明した後でさえ、あなたは2013年に実際に解決策があることに気づいていません。もちろん、解決策は実際にMonoありますXamarin.Macが、それは解決策です。Monoの現在のバージョンは.NET 4.0のほぼ100%完全な実装であり、移植されない可能性が高いいくつかの主要な機能(WPFなど)が不足しているだけです。
ラムハウンド2013
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.