2012-07-01 92 views
0

我已經成功安裝了Mono,並且使用了mac installer(其中包括F#),並且一直在使用交互式shell。我也可以編譯F#源文件就好產生.NET EXE,但是當我嘗試使用Mono運行它,我得到的錯誤:在單聲道上運行F#exe(mac)

Unhandled Exception: System.TypeLoadException: Could not load type '<StartupCode$HelloWorld>.$HelloWorld' from assembly 'HelloWorld, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null'. 
[ERROR] FATAL UNHANDLED EXCEPTION: System.TypeLoadException: Could not load type '<StartupCode$HelloWorld>.$HelloWorld' from assembly 'HelloWorld, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null'. 

文件的內容 - HelloWorld.fs - 簡直是

printfn "Hello world" 

我也讀過this question,但該解決方案無法解決我的問題。有任何想法嗎?

+0

你應該'printfn',而不是'println' - 讓代碼編譯 –

+0

哎呦,我做了一個錯字職位;正在修復...感謝您注意:) – Jwosty

+0

我沒有問題,使用fsc/fsc2構建單線程並在我的Macbook Pro上運行使用單聲道2.10.5。另一個問題看起來像是隻包含缺少FSharp程序集 - 而不是你在這裏遇到的問題。 – ravuya

回答

0

原來,我在兩個不同的位置安裝了2個不同的單聲道版本 - /opt/local/lib/mono中的2.10.6和/Library/Frameworks/Mono.framework中的2.10.9。 fsi命令符號鏈接到後者隨附的fsi.exe,而mono命令本身是另一個指向前者的符號鏈接。

教訓:確保你沒有安裝同一軟件的兩個版本

+0

然後,實際的問題可能是Fsharp庫位於GAC中的一個,但不是另一個 - 運行'fsi/fsc'使用良好的GAC,但使用'mono Helloworld.exe'將使用不良的GAC運行 –

+0

哦,所以我基本上和另一個問題有同樣的問題,只是「中途」:P – Jwosty