DDDの本を読んでいて、ふと疑問に思ったことは、C#で書いたコードをWindowsではなくLinux上で動かすことはできるのだろうか?ということ。
調べてみたら、Linux用のランタイム(実行環境)が用意されていて、ある程度は可能なようです。
.NET Core
.NET(旧称 .NET Core)は、.NETを実装したフリーでオープンソースなクロスプラットフォームマネージソフトウェアフレームワークである。
.NET 5以降は、.NET FrameworkおよびXamarin/Monoの機能が統合され、それらの後継にもなっている。
Ubuntuに.NET(dotnet)をインストールすれば、C#で書いたコードをコンパイルして実行できるみたいです。
MONO
GUIを作りたい場合は、現時点だとまだ.NETは対応が不十分ですが、MONOを使えばいけるようです。
LinuxではMonoDevelopを使うことでGUIアプリ開発できる
MONOが.NET Frameworkをラップしてくれるから
.NET Frameworkが使えないため
Windowsでなら使えるはず
MONO vs Core
結論:CoreよりMONO。MONOもCoreもクロスプラットフォームを売りにしている。
しかし実際はMONOのほうが優秀。
Mono(モノ)は、GNOMEプロジェクト創設者のミゲル・デ・イカザが開発した、Ecma標準に準じた.NET Framework互換の環境を実現するためのオープンソースのソフトウェア群、またそのプロジェクト名である。
2018年3月現在、マイクロソフトの子会社であるXamarinと.NET Foundationが開発、販売、サポート業務を行っている。
MonoDevelop【ものでべろっぷ】
UNIX/GNOME用のC#/.NET統合開発環境(IDE)。フリーソフトウェア。
オープンソースな.NET Frameworkの実装Monoと併用する。
MonoDevelop(Xamarin Studioとも呼ばれる)は、Monoプラットフォーム上で動作するオープンソースの統合開発環境。
MonoとGTKが対応する環境であればオペレーティングシステム (OS) を問わず動作させることが出来る。
MonoDevelop enables developers to quickly write desktop and web applications on Linux, Windows and macOS.
It also makes it easy for developers to port .NET applications created with Visual Studio to Linux and macOS maintaining a single code base for all platforms.
ちょっと面倒くさそうですが、Linux上でC#のプログラムを動かすことは可能でした。