読者です 読者をやめる 読者になる 読者になる

Monoすごい!

mono

これまでVisual Studio 2005でGUIアプリを作ってたんだけど、Linuxでも動かしたいという要望があったようなので、Monoを試してみることにしました。
このアプリでは、ユーザの入力に応じて、C#のコードを自動生成して、生成されたコードからDLLをビルドして、そのDLLを遅延ローディングして、マウスでブロックを操作して組み合わせたり、とかいうことをしてるんですが、それらの機能がほとんどちゃんと動作しました。
winformsのTreeViewとかDataGridもちゃんと動くし、日本語もちゃんと表示されるんですね。

以下のようなちょっと気になることもあったんだけど、それほど大きな問題でもなさそう。時間があったら調べてみるかな。

  • TextBoxのValidatingイベントで入力を検証して、ErrorProviderでエラーを表示するところが動かなかった。
  • コンボボックスのテキスト選択の動きがすこしおかしい。
  • DataGridの表示が、マウスでクリックしない限り更新されない。
  • テキストボックスに入力した値を、ユーザー設定のsettingsに保存しているんだけど、保存されてない?

あと、ちょっと困ったのが、ディレクトリの階層を区切る記号が、WindowsとLinuxでは、"\"と"/"と異なるので、エラーになってしまった。どうやって対処するのがいいんだろ?

Vine Linux 4.0にMonoをインストール

Monoのインストールは簡単にできたのですが、一応メモ。

  • まずは、http://www.mono-project.comのDownloadsからmono-1.2.4_4-installer.binをダウンロードします。
  • 次に、rootになってMonoをインストールします。( 一般ユーザでは、落ちてしまいました。)

$ su -
# chmod +x mono-1.2.4_4-installer.bin
# ./mono-1.2.4_4-installer.bin

  • インストールディレクトリや、ライセンスの同意に答えていきます。
  • インストールが終ったと思ったら、以下のようなエラーメッセージが出ました。

Missing libraries:

                              • -

liblinc.so.1

                              • -

It appears your system may be unable
to run graphical apps included
in this installer. Please fix
unresolved symbols by installing
the necessary packages for your
system.

  • なので、aptでlincをインストールします。

# apt-get install linc

  • 最後に環境パスを設定します。mono-1.2/bin/setup.shの内容を~/.bashrcなどにコピーして、$ source ~/.bashrcしましょう。
  • アプリを動かすときは、$ mono XXXX.exeとすればOK。

(2007/06/27 追記:ディレクトリ区切り文字について)
System.IO名前空間のPathクラスのDirectorySeparatorCharを使えば、プラットフォームに応じたディレクトリ区切り記号が取得できるようです。
ちなみに、Javaの場合は、File.SeparatorChar。