2013-04-24 83 views
2

我想使用F#3.0命令行编译器编译可执行文件,然后在Mono下运行它。在Mono下运行由F#3生成的可执行文件

代码开始执行,但Mono几乎立即死亡抱怨它无法加载System.Core。谷歌搜索这表明我应该瞄准.net 3.5,而不是版本4.进一步的谷歌搜索表明,F#编译器曾经采取选项 - CLI版本,但它似乎不再接受。

我确信有一种方法,看起来好像我使用MSVC那里会有某处我可以点击来设置所需的CLR版本。

我该怎么做?非常感谢。

编辑:

我试图在MSVC的GUI开发了一个简单的项目目标.NET 3.5。然后,可执行文件要求使用FSharp.Core 2.0.0,并且比以前进一步。 F#3编译器似乎带有一个.net 2.0核心库,所以我认为它应该能够生成与过时版本的框架兼容的代码。这个问题留下的问题是“如果GUI能够做到这一点,我该如何从命令行做同样的事情”?

+1

挖掘源代码揭示了这个错误信息 - 它有帮助吗?“命令行选项'--cliroot'已被弃用,请使用对mscorlib.dll的特定副本的明确引用。”' – 2013-04-24 23:26:31

回答

2

如果您使用F#3.0,没有理由不默认使用.NET 4.0(当然,除非您需要与现有的.NET 2.0或3.5程序集进行互操作)。

您正在运行哪个版本的Mono? F#3.0需要Mono 2.10或更高版本,但我强烈建议您使用Mono 3.0或更高版本。

+0

我是使用2.10.8.1(在Ubuntu上默认)。我得到的例外是“无法加载文件或程序集”System.Core,版本4.0.0.0,文化= .....“ – 2013-04-24 17:21:22

+0

@JoeHuha如果你在Ubuntu 12.04或更新版本,只需卸载单声道,然后克隆/从[GitHub上的源代码](https://github.com/mono/mono)构建/安装它;然后对F#3.0执行相同的操作。 – 2013-04-24 17:40:09

+0

我可以,但是我的目标确实是使其便于携带,因此它可以即装即用,其他人可以轻松使用它。 – 2013-04-24 17:49:58