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 実行ファイル名 <引数>
とやったらクラッシュしなくなった