C#を使用してクロスプラットフォームアプリケーション(MacおよびWindows)を作成できますか?[閉まっている]


8

この質問に関する多くの古い情報とInterwebsの周りを飛んでいる多くの記事を見ていますが、物事がどこにあるのかははっきりとわかりません。

基本的に、ネイティブのWindowsアプリケーションにコンパイルしたり、ネイティブのMacアプリケーション(ParallelsやWineなど)にコンパイルしたりできるC#コードを記述したいと思います。これはできますか?

Xamarinのような製品は進むべき道ですか?XamarinのWebサイトでは、「同じ言語、API、データ構造を使用して、すべてのモバイル開発プラットフォームで平均75%のアプリコードを共有しています」と述べています。しかし、プラットフォーム固有の25%のアプリコードが何を必要とするのかはわかりません。また、OSXとWindowsをターゲットにしているのかどうかもわかりません。彼らのWebサイトはモバイルデバイス中心です。

[後で追加]

概要:Xamarinはクロスプラットフォームアプリケーションを作成するようには設計されていません。MacaのGUI操作を使用して、C#でMacアプリケーションを作成する方法が提供されます。彼らが推奨するのは、すべての「ビジネスロジック」クロスプラットフォームを記述してから、2つの完全に別個のGUIを記述することです。1つはWindows用、もう1つはMac用です。

C#/ Qtは非常に初期の段階にあるようです(2016年以降にこの記事を誰かが見つけた場合は、チェックしてください)。

monoはGUIを含むクロスプラットフォームを実行するようですが、Windowsフォームを使用する場合のみです。


docs.asp.net/en/latest/getting-started/index.htmlcode.visualstudio.comを確認できます。Visual Studioと.NETはオープンソースになっています。あなたの目的を解決するフープ。しかし、そうです、GUIアプリの作成を楽しみにしているのであれば、それはまだ可能ではないと思います。
Krishnandu Sarkar

Xamarin.Formsが有料版になりました。すべてを行うわけではありませんが、かなりのことを行います。クロスプラットフォームのGUIを開発できます。
MetalMikester

@KrishnanduSarkar何言ってるの?ASP .NETはそれとどのような関係がありますか?:)
Konrad Morawski

@KrishnanduSarkarプラスは、Visual Studioのオープンソース化について初めて聞いたものです。その情報へのリンクを提供していただけませんか?
Konrad Morawski、2015年

@KonradMorawskiそうではありません。私はただ彼に通知することを考えました。そのため、GUIアプリを作成することを楽しみにしている場合、これは彼の目的にかなわないと述べました。まあリンクは私のコメントですでに与えられています。
Krishnandu Sarkar

回答:


10
  1. XamarinはWindowsを「対象とする」ことはできません。これは意味がないためです。C#で記述したものはすべて、Windows上で実行する準備ができています。そのため、Xamarin.Android、Xamarin.iOS、Xamarin.Macのライセンスのみを販売しています。しかし、Xamarin.Windows抽象化レイヤーは何をすることになっているのでしょうか?それは教科書のヘビ油製品でしょう:)

  2. 「ネイティブWindowsアプリケーション」 -C#に関しては、ネイティブはトリッキーな言葉です。Xamarinを使用して作成されているかどうかに関係なく、C#アプリには通常、.NETまたはMonoランタイムが必要です。ILではなくネイティブバイナリを作成する場合は、.NET Nativeやngenなどのソリューションがありますが、 Xamarinの使用とは関係ありません。あなたがこの厳密な意味で「ネイティブ」を意味していたとは思いませんが、この違いに注意することは良いことです。C#を使用すると、Windowsでも通常、一種の仮想マシンを使用します。

  3. Xamarin.Macは、C#コードを構築できるようにMono.OSXランタイムを必要とします。また、Xamarin.Macの内部で説明されているように、Objective-CランタイムとMono.OSXをブリッジします。

    ネイティブクラス(NSString、NSApplicationなど)のインスタンスを含むObjective-Cベースのランタイムがあり、マネージクラス(System.String、HttpClientなど)のインスタンスを含むC#ランタイムがあります。これらの2つの作品の間にXamarin.Macは双方向のブリッジを作成するため、Objective-C(NSApplication.Initなど)でメソッド(セレクター)を呼び出すことができ、Objective-Cは(アプリデリゲートのメソッドのように)コールバックできます

    したがって、結果として得られるアプリケーションは、WebViewコンポーネントにラップされたHTMLの一部ではないという意味で「ネイティブ」です。ネイティブUI要素とAPIにアクセスできます。Mono.OSXをインストールする必要があるという意味では、ネイティブではありません。つまり、WindowsのC#がデフォルトの環境で取得するのと同じくらいネイティブです。

  4. また、http: //blog.xamarin.com/introduction-to-xamarin.mac-seminar/に慣れることをお勧めします。これは(2013年)の日付である可能性がありますが、コアスルースは保持されていると思います。スライド7をご覧ください。

  5. 「プラットフォーム固有のアプリコードの25%が何を伴う可能性があるのか​​わからない」 -定義により、プラットフォームにとらわれないものではないので、ほとんど「純粋な」ビジネスロジック、および抽象化したものは何でも具体的な実装(「IRepository」インターフェイスなど)。ただし、プラットフォーム固有のものは何でも:ユーザーインターフェイス、データベースの永続性、WindowsまたはMac用のサードパーティライブラリは共有できません。75/25の比率は非常に大まかなルールであり、アプリケーションの性質に応じて、走行距離は大きく異なります。

私はモバイルプラットフォーム用のXamarinで非営利的な経験をいくつかしているだけで、iOS(Windows PhoneとAndroidのみ)はカバーしていません。これについて不正確な場合は、訂正してください。


github.com/mono/xwtにも言及できます。これは、GTK#、MonoMac、Xamarin.Mac、WPF for GUIの抽象化レイヤーです。
Residuum
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.