結論、LinuxではMonoDevelopが最善。
結論
CoreよりMono。
ツール | SDK | .NET環境 | 利用シーン |
---|---|---|---|
MonoDevelop | MONO | Standard, Framework | ClassLib, UnitTest, ConsoleApp, Gtk#, Eto.Forms |
dotnet | .NET Core | Standard, Core | ClassLib, UnitTest, ConsoleApp |
- LinuxではMonoDevelopを使うことでGUIアプリ開発できる
- MONOが.NET Frameworkをラップしてくれるから
- LinuxでのdotnetはGUIアプリ開発できない
- .NET Frameworkが使えないため
- Windowsでなら使えるはず
- .NET Frameworkが使えないため
SDK
SDK | 概要 |
---|---|
.NET Framework | Windowsでのみ利用可 |
.NET Core | Linuxでは.NET Frameworkプロジェクトをビルド&実行不可 |
MONO | .NET Frameworkの一部コードをLinux等で実行できる |
LinuxではMONOが最有力と考えて良さそう。
.NET CoreはLinuxでも使えるものの、基本的にWindows上での利用のみ充実させるつもりらしい。たとえばWinFormやWPFも使えるようにするが対象OSはWindowsのみ可。
GUI
GUI Lib | 概要 |
---|---|
Gtk# | Linuxで使用可能なGUIライブラリ |
Eto.Forms | Linux等の多環境で使用可能なGUIライブラリ |
LinuxにおいてGUIはEto.Formsが最善。Eto.Formsは.NET FrameworkプロジェクトなのでLinux上ではMONOでのみビルド可。
なお、WinForm, WPFなどはすべてWindowsのみしか使用できない。
エディタ or ツール
開発環境 | UI | 対応OS |
---|---|---|
Visual Studio 20xx | IDE | Win |
dotnet | CLI | Win, Mac, Linux |
MonoDevelop | IDE | Win, Mac, Linux |
Linuxで使えるIDEはMonoDevelopのみ。
dotnetも使えるがCLIでありターミナルからコマンドを実行する面倒なもの。しかも.NET FrameworkのビルドはWindowsのみ。MONOのようにLinux上でのビルドができない。Eto.FormsのDesktopプロジェクトは.NET Frameworkであるため、MonoDevelopでないとビルドできない。
- LinuxでEto.Froms開発するならMonoDevelopのみ可
- Linuxでのdotnetは.NET Coreで動作するプロジェクトのみ可(.NET Frameworkは不可)
MONO vs Core
結論:CoreよりMONO。MONOもCoreもクロスプラットフォームを売りにしている。しかし実際はMONOのほうが優秀。
Linuxでもdotnetは使えるが、MonoDevelopがあれば不要。dotnetならMONOにはできない.NET Core対応プロジェクトを作成することができる。しかしそもそもCoreアプリ自体の汎用性が低い。CoreのGUIライブラリはWindowsでしか使えないからだ。Eto.Formsも同様にWindowsでしか使えない。Eto.Formsが.NET Frameworkプロジェクトであり、.NET FrameworkはWindows上でしか動作しないからだ。
MONOならEto.Formsが使える。MONOならLinuxでも.NET Frameworkをビルドできるためだ。LinuxではCoreなど要らない子である。
.NET Coreにもクロスプラットフォーム用GUIライブラリがあるらしいが未調査。
.NET Coreの一体どこがクロスプラットフォームなのか。.NETファミリが乱立して紛らわしくなっただけに思える。一応フォローしておくとUnitTestやConsoleアプリまでならクロスプラットフォームに開発できる。だが、GUIアプリ開発までできるMONOにはかなわない。クロスプラットフォームという一点だけで言えば、.NET Coreは劣化版MONOである。
よってLinuxではMONOが最善。
Visual Studio Code
Visual Studio CodeというテキストエディタもLinuxで使える。IDEではないためビルドや実行はできないと思うが、頑張れば.NET Coreと連携できるらしい。が、Linuxでは.NET Frameworkがビルドできない問題があるため用途は限定される。
やはりLinuxではMonoDevelopが良いだろう。
対象環境
- Raspbierry pi 3 Model B+
- Raspbian stretch(9.0) 2018-06-27
- Mono 5.18.0.240
- MonoDevelop 7.6 build 711
- Eto.Forms 2.4.1 拡張機能, NuGetパッケージ
- .NET Core 2.2, MonoDevelop参照方法