UbuntuでMonoを導入してC#のコンパイルをしてみる。

monoコンピュータ
mono

Ubuntuで動くMonoという.NetFrameworkの動作環境を構築すると、.NetFrameworkを使ったC#のプログラムがUbuntuで動作するらしいので試してみます。

導入

ターミナルを起動し公式サイトの手順を実行します。

Ubuntu 20.04

sudo apt install gnupg ca-certificates
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF
echo "deb https://download.mono-project.com/repo/ubuntu stable-focal main" | sudo tee /etc/apt/sources.list.d/mono-official-stable.list
sudo apt update

Ubuntu 18.04

sudo apt install gnupg ca-certificates
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF
echo "deb https://download.mono-project.com/repo/ubuntu stable-bionic main" | sudo tee /etc/apt/sources.list.d/mono-official-stable.list
sudo apt update

引用元:Mono公式サイト

私の環境はUbuntu 19.10でMonoの公式サイトの説明は18.4でしたがとりあえずaptでインストールできるようになりました。
次にmonoをインストールします。

sudo apt install mono-devel

これでインストールできるようになったはず。

試しに以下のソースをコンパイルしてみます。
ファイル名:hello.cs

using System;

class Prog
{
    static void Main()
    {
        Console.WriteLine("Hello World!!");
    }
}

コンパイル

mcs hello.cs

成功するとhello.exeが出来上がります。

実行

mono hello.exe
Hello World!!

成功しました。

Ubuntuで.exeファイルが実行しているのを見ると少し奇妙な感じがします。
この.exeファイルはWindows10にコピーしたら実行できるのでしょうか?気になります。

今後は、いろいろなC#のソースファイルをコンパイルしてみたいと思います。

.NetFrameworkを使ったプログラムは動作します。ConsoleやWinFroms(多分Classlibも)動作しますがWPFは無理そうです。
また、.NetFrameworkですので.NET5以降のSDKは対応しないという事になります。

コメント