我已经建立了一个网站,它接受代码片段并编译它们并运行它们。但是,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
答案 0 :(得分:2)
您要传递给服务器上的fsc.exe的命令行是什么?它闻起来像是-r
- FSharp.Core 4.0但是mscorlib 2.0。确保在命令行上传递对两者的显式引用。在构建示例命令行时,请检查Visual Studio中的“输出”窗口。
修改
看到这个问题:
答案 1 :(得分:0)
检查您的开发计算机上运行的.NET版本与生产环境中的.NET版本。最简单的方法是打印出System.Environment.Version
。
我怀疑你会发现你的开发机器正在使用.NET 3.5,而你的生产机器正在使用.NET 2.0,或类似的东西。检查运行应用程序的应用程序池,并设置该应用程序池的版本。
答案 2 :(得分:0)
您的开发机器是32位还是64位?看起来服务器是64,因此如果它们不同则可能是一个问题。