自分向けのメモ。消しゴムのMonoじゃないです。念のため。

Monoってのは.NET Frameworkの互換フレームワークです。ちょっと古いけどこちらの記事が解りやすいです。

今回会社でMonoを使うことになった(というかほぼ完成してるやつを改修することになった)ものの、Monoなんてやったことないのでインストールから「Hello world」表示するまでやってみました。
といっても、公式サイトのやり方そのまんまだけど。

インストール


Ubuntuの場合は下記の手順でインストールします。私はUbuntu 16.04にインストール。

1
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF
2
echo "deb http://download.mono-project.com/repo/debian wheezy main" | sudo tee /etc/apt/sources.list.d/mono-xamarin.list
3
echo "deb http://download.mono-project.com/repo/debian wheezy-apache24-compat main" | sudo tee -a /etc/apt/sources.list.d/mono-xamarin.list
4
sudo apt-get update
5
sudo apt-get install mono-complete

インストール終わったらバージョン確認。

1
mono --version
2
3
Mono JIT compiler version 4.4.0 (tarball Tue Jun 14 13:41:51 UTC 2016)
4
Copyright (C) 2002-2014 Novell, Inc, Xamarin Inc and Contributors. www.mono-proj ect.com
5
        TLS:           __thread
6
        SIGSEGV:       altstack
7
        Notifications: epoll
8
        Architecture:  amd64
9
        Disabled:      none
10
        Misc:          softdebug
11
        LLVM:          supported, not enabled.
12
        GC:            sgen

4.0は昨年リリースされたそうですが、Copyrightは2014まで(なんでだろう)現在4.4C#6にも対応している模様。

対応状況

Hello world


とりあえず、Hello world書く。

1
using System;
2
3
namespace MonoTest
4
{
5
    class Program
6
    {
7
        static void Main (string[] args)
8
        {
9
            Console.WriteLine("Hello world");
10
            Console.ReadLine();
11
        }
12
    }
13
}

MonoTestというプロジェクトで作成。WindowsでビルドしてWinSCPでUbuntuに転送。

以下Ubuntu側で実行。

1
//monoコマンドで実行
2
mono MonoTest.exe
3
4
//表示される
5
Hello world

動かないだろーなーと思ったら、動いた!

前述の記事によると…

C#についてもILについても標準化されていて、Monoの実装はこの標準に基づいている。その結果、マイクロソフト製C#コンパイラを使ってWindows上でビルドしたプログラムを、Linux上のMonoランタイムで実行したり、あるいはその逆も、全く問題ない。

ILも標準化されているらしい。すげー!

Ubuntu側でビルドするにはMonoTest.csmcsコマンドでビルドします。同じディレクトリにMonoTest.exeが出来上がります。

1
mcs MonoTest.cs

今回やったのはこんだけ。やってないけどプロジェクトでビルドとかもできるんだろうね~。