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

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

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

インストール


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

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

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

1
2
3
4
5
6
7
8
9
10
11
12
mono --version

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

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

対応状況

Hello world


とりあえず、Hello world書く。

1
2
3
4
5
6
7
8
9
10
11
12
13
using System;

namespace MonoTest
{
class Program
{
static void Main (string[] args)
{
Console.WriteLine("Hello world");
Console.ReadLine();
}
}
}

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

以下Ubuntu側で実行。

1
2
3
4
5
//monoコマンドで実行
mono MonoTest.exe

//表示される
Hello world

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

前述の記事によると…

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

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

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

1
mcs MonoTest.cs

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