基本CLI库'mscorlib'与引用的F#核心库二进制不兼容

时间:2010-11-05 17:45:26

标签: .net f# compiler-errors

我已经建立了一个网站,它接受代码片段并编译它们并运行它们。但是,F#在服务器上被破坏了。每当我尝试编译F#代码时,都会收到以下错误消息:

  

引用的或默认的基本CLI库'mscorlib'与引用的F#核心库'C:\ Program Files(x86)\ Microsoft F#\ v4.0 \ FSharp.Core.dll'二进制不兼容。请考虑重新编译库或明确引用此库的一个版本,该版本与您正在使用的CLI版本相匹配。

     

打开二进制文件'C:\ Program Files(x86)\ Microsoft F#\ v4.0 \ FSharp.Core.dll'时出错:抛出了类型'Microsoft.FSharp.Compiler.ErrorLogger + ReportedError'的异常。

要清楚,这是编译器返回的错误,而不是运行代码时发生的错误。

该网站在我的开发机器上运行得很好,并且可以在虚拟机上正常工作,我可以帮助诊断问题。

该错误信息的唯一Google匹配导致我尝试清理F#/。NET安装无济于事。我做了框架的修复安装并卸载/重新安装了我正在使用的F#包。

示例:http://dotnetpad.net/ViewPaste/ZvXBgizf70q83Fk6VmboHw

F#编译代码:http://bitbucket.org/gobiner/.net-pad/src/tip/DotNetPad/Compilers/FSharpCompiler.cs

3 个答案:

答案 0 :(得分:2)

您要传递给服务器上的fsc.exe的命令行是什么?它闻起来像是-r - FSharp.Core 4.0但是mscorlib 2.0。确保在命令行上传递对两者的显式引用。在构建示例命令行时,请检查Visual Studio中的“输出”窗口。

修改

看到这个问题:

FSharp.Compiler.CodeDom for VS2008 and VS2010 side-by-side

答案 1 :(得分:0)

检查您的开发计算机上运行的.NET版本与生产环境中的.NET版本。最简单的方法是打印出System.Environment.Version

我怀疑你会发现你的开发机器正在使用.NET 3.5,而你的生产机器正在使用.NET 2.0,或类似的东西。检查运行应用程序的应用程序池,并设置该应用程序池的版本。

答案 2 :(得分:0)

您的开发机器是32位还是64位?看起来服务器是64,因此如果它们不同则可能是一个问题。