だらだら〜自由自在〜

インディーゲーム制作チーム GAME GABURI でプログラム担当してます

macでNPOI使ったexeを動かしてみた

MasterData(静的データ)を記述したExcelをNPOIでパースしてUnityのcsファイルにするコマンドラインツールをWindowsで開発、運用していたのだけど。macで使えないかなーと思ってやって見たら簡単にできた。

mac向けに再ビルドとかも不要。windowsでビルドしたものをgitでcheckoutしてきてそのままうごいた。
簡単にbuild環境を書くと

Target framework: .Net framework 4.5.2
nuget package: CommandLineParser.1.9.71, NPOI.2.2.1, SharpZipLib.0.86.0

ただ、ダメだった点もあり。

projectのカスタムビルドステップでエラーがでた

PostBuildProcessで実行ファイルコピーをxcopyでやっていたのでエラーがでた。
VisualStudio for Macでプロジェクト設定見てもこの設定されたPostBuildProcessが表示されてなくて、ビルド通すには結局csprojをテキストエディタで開いてコメントアウトする必要があった。
そもそもそれは解決になってないので何らかのwin/mac両方いける対応が必要なんだけど…。
まぁそもそもビルドが不要だったので調べてない。

VisualStudioで起動するとOKなのに、Terminalから実行するとクラッシュする

NPOIが

Index was outside the bounds of the array.
at NPOI.SS.Formula.FormulaCellCacheEntrySet.AddInternal (NPOI.SS.Formula.CellCacheEntry[] arr, NPOI.SS.Formula.CellCacheEntry cce) [0x0000f] in <74c82c9b21ef43cd830d96bf8ab40372>:0

こんな感じで。
起動は

mono 実行ファイル名 <引数>

みたいな感じでやってたのだけど

mono32 実行ファイル名 <引数>

とやったらクラッシュしなくなった