このドキュメントは対象とするMonoのバージョンが古くなっています。 より新しいバージョンについては以下のページを参照してください。
Monoとは同名のプロジェクトによって開発されている、UNIX/Linux上で動作する.NET互換の実行環境です。 Monoオープンソースで開発されているため、誰でもソースコードを入手することが出来、自由にMonoを使うことが出来ます。 現在Beta1がリリースされていて、この時点でcorlib、 System、System.Xml、System.Web、System.Drawingなどの各ライブラリの実装率(使えるクラス・メソッドの率)は総じて90%を超えています。 また、Windows Formsも77%が実装済みとなっているのであまり特殊な機能を使ったものではない限り、ウィンドウを用いたアプリケーションも動作します。
また、Monoと同時にC#コンパイラであるMCSも公開されています。 これを利用することによってLinux上でC#コードをコンパイルし、実行するということが出来るようになっています。 また、Visual Basic .NET用のコンパイラであるmbasも開発されています。
Monoのインストール (Windowsの場合)
ここでは、Windows上にMonoをインストールしたときの手順を示します。
- Monoのダウンロードページに行き、Windows用のインストーラをダウンロードする(Windowsのロゴと、Windows installerという風に書かれている部分)。
- ダウンロードしてきたインストーラを起動する。
- 「Welcome to the Mono Setup Wizard」の画面で「Next」をクリック。
- 「Choose Install Location」の画面でインストール先を選択した後、「Install」をクリック。
- インストールが実行される。
- 完了。
Monoのインストール (RedHat Linux 9の場合)
ここでは、RedHat Linux 9上にMonoをインストールしたときの手順を示します。 今回はRPMパッケージを用いてインストールしました。
-
RedHat Linux用のMonoパッケージのダウンロードページに行き、以下のパッケージをダウンロードする。 ([]内はパッケージのサイズ)
- 「Mono Runtime and C# compiler」の項目
- mono-core-0.91-0.ximian.6.3.i386.rpm [4.2M]
- mono-core-devel-0.91-0.ximian.6.3.i386.rpm [511.5k]
- mono-runtime-devel-0.91-0.ximian.6.3.i386.rpm [14.0M]
- 「Dependencies」の項目
- icu-2.6.1-1.ximian.6.5.i386.rpm [228.8k]
- libicu-devel-2.6.1-1.ximian.6.5.i386.rpm [462.5k]
- libicu26-2.6.1-1.ximian.6.5.i386.rpm [4.4M]
- 「Cairo and its dependencies」の項目
- cairo-0.1.22-0.ximian.6.2.i386.rpm [72.2k]
- cairo-devel-0.1.22-0.ximian.6.2.i386.rpm [885.5k]
- libpixman-0.1.1-0.ximian.6.0.i386.rpm [36.3k]
- libpixman-devel-0.1.1-0.ximian.6.0.i386.rpm [133.1k]
- 「Mono Stack」の項目
- mono-posix-0.91-0.ximian.6.3.i386.rpm [16.2k]
- 「Optional locales」の項目
- mono-locale-cjk-0.91-0.ximian.6.3.i386.rpm [229.8k]
- 「Mono Runtime and C# compiler」の項目
- 次の順でパッケージをインストールする。
- libicu26-2.6.1-1.ximian.6.5.i386.rpm
- libicu-devel-2.6.1-1.ximian.6.5.i386.rpm
- icu-2.6.1-1.ximian.6.5.i386.rpm
- libpixman-0.1.1-0.ximian.6.0.i386.rpm
- libpixman-devel-0.1.1-0.ximian.6.0.i386.rpm
- cairo-0.1.22-0.ximian.6.2.i386.rpm
- libpixman-devel-0.1.1-0.ximian.6.0.i386.rpm
- mono-posix-0.91-0.ximian.6.3.i386.rpm, mono-core-0.91-0.ximian.6.3.i386.rpm (このインストールは同時に行う必要があるので注意。)
- mono-runtime-devel-0.91-0.ximian.6.3.i386.rpm
- 完了
コンパイラの動作テスト
Monoのインストールが完了したら、mcsコンパイラが正しく動作するかテストしてみます。 コンソール(Linux)・コマンドライン(Windows)で次のように入力します。
ここで、次のような結果が出力されれば問題なくインストールされています。
Hello, Mono!を表示させる
コンパイラが無事動作したら、試しに「Hello, Mono!」と表示するプログラムを作ってみます。 HelloMono.csというファイルを作成し、次のようなコードを記述します。
ソースコードが完成したら、コンパイルしてみます。 コンパイルするには次のようにコマンドを入力します。
コンパイルに成功すると「Compilation succeeded」と表示されます。 次に完成したアセンブリを実行してみます。 実行する場合は「mono (アセンブリ名)」とします。
このように出力されれば、問題なく実行されています。
Monoと.NET Framework
mcsでコンパイルして出来たファイルは、MonoだけでなくWindows上の.NET Frameworkでも動作します。 試しに先ほど作ったHelloMono.exeを.NET Framework上で実行させてみます。
この実行結果から分かるとおり、Monoでコンパイルしたアセンブリは.NET Framework上でもそのまま動作します。 また、次のようなVB.NETのコードをコンパイルし、それがMonoで動作するかも試してみます。
この通り、VB.NETのコードをコンパイルしたものであっても、Monoでも.NET Frameworkでも同じように動作します。
MonoでWindowsアプリケーション (Windowsの場合)
mcs ではWindows Formsをコンパイル出来ますが、パッケージとでインストールされる物だけでは実行は出来ません。 Windows Formsを使ったアプリケーションを実行するには、WineLibが必要なようですが詳しく調べていません。 わかり次第追記します。
MonoでWindowsアプリケーション (RedHat Linux9の場合)
実行するにはWineやGDI+など、いくつかパッケージを追加インストールしなければなりません。 ダウンロードするパッケージを含め、インストール方法を説明します。
-
RedHat Linux用のMonoパッケージのダウンロードページに行き、以下のパッケージをダウンロードする。 ([]内はパッケージのサイズ)
- 「Microsoft .NET stack」の項目
- mono-drawing-0.91-0.ximian.6.3.i386.rpm [247.0k]
- mono-window-forms-0.91-0.ximian.6.3.i386.rpm [526.2k]
- libgdiplus-0.3-0.ximian.6.1.i386.rpm [70.6k]
- libgdiplus-devel-0.3-0.ximian.6.1.i386.rpm [2.1M]
- 「Microsoft .NET stack」にある「Preview components」の項目
- wine-20040408-1rh9winehq.i386.rpm [9.3M]
- winelib-0.2-0.ximian.6.2.i386.rpm [26.5k]
- 次の順でパッケージをインストールする。
- libgdiplus-0.3-0.ximian.6.1.i386.rpm
- libgdiplus-devel-0.3-0.ximian.6.1.i386.rpm
- mono-drawing-0.91-0.ximian.6.3.i386.rpm
- wine-20040408-1rh9winehq.i386.rpm
- winelib-0.2-0.ximian.6.2.i386.rpm
- mono-window-forms-0.91-0.ximian.6.3.i386.rpm
- 「Microsoft .NET stack」の項目
- インストール
-
- 完了。
インストールが終わったところで、試しに次のようなコードをコンパイル・実行してみます。
コンパイル・実行は次のようにします。
うまく実行されれば次のように表示されると思います。