Monoで.NET Compact Framework向けのアプリケーションをコンパイルする

これまでW-ZERO3で動くアプリをLinuxで開発したいと思ってもなかなか情報がなくて成功しなかったのだが、ついに一つの方法が見つかった。それはMonoを使って.NET向けのアプリを開発するというもの。ただし普通にコンパイルしただけでは動かない。ポイントは2つ:

まず、.Net Compact Framework 2.0メモを参考に、.NET Compact Framework用のDLLを入手し、カレントディレクトリにDLLへのシンボリックリンクも作っておく。次に、以下のコマンドでコンパイルを行う。

$ gmcs -t:winexe -noconfig -r:system.dll -r:system.windows.forms.dll -r:system.drawing.dll HelloForm.cs Program.cs 

そうしたら、Mono and the Compact Framework in Love, Part Twoで公開されているcf-cecil-patcherを使って、publick keyをCompact Frameworkのものに書き換える。

$ mono cf-cecil-patcher.exe HelloForm.exe

HelloForm.exeをW-ZERO3にコピーして実行したら動いた!