Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/tensorflow/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 基本CLI库';mscorlib';二进制文件是否与引用的F#core库不兼容_.net_F#_Compiler Errors - Fatal编程技术网

.net 基本CLI库';mscorlib';二进制文件是否与引用的F#core库不兼容

.net 基本CLI库';mscorlib';二进制文件是否与引用的F#core库不兼容,.net,f#,compiler-errors,.net,F#,Compiler Errors,我已经建立了一个网站,可以获取代码片段并编译和运行它们。但是,服务器上的F#已损坏。每当我试图编译F#代码时,都会收到以下错误消息: 被引用或默认的基本CLI库“mscorlib”与被引用的F#core库“C:\Program Files(x86)\Microsoft F#\v4.0\FSharp.core.dll”二进制不兼容。考虑重新编译库或明确地引用与您使用的CLI版本匹配的库的版本。 打开二进制文件“C:\Program Files(x86)\Microsoft F\v4.0\FShar

我已经建立了一个网站,可以获取代码片段并编译和运行它们。但是,服务器上的F#已损坏。每当我试图编译F#代码时,都会收到以下错误消息:

被引用或默认的基本CLI库“mscorlib”与被引用的F#core库“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”的异常

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

该网站在我的开发机器上运行良好,在我用来帮助诊断问题的虚拟机上运行良好

谷歌对错误消息的唯一点击导致我尝试清理F#/.NET安装,但没有结果。我对框架进行了修复安装,并卸载/重新安装了我正在使用的F#软件包

例如:


F#编译代码:

检查您在开发机器上运行的.NET版本与生产机器上运行的版本。最简单的方法可能是打印出
System.Environment.Version


我怀疑您会发现您的开发机器正在使用.NET3.5,而您的生产机器正在使用.NET2.0或类似的东西。检查您的应用程序运行在哪个应用程序池中,您可以设置该应用程序池的版本。

在服务器上传递给fsc.exe的命令行是什么?它闻起来像是在使用FSharp.Core 4.0而不是mscorlib 2.0。确保在命令行上对这两个对象都传递显式引用。在生成示例命令行时,请检查Visual Studio中的输出窗口

编辑

见这个问题:


您的开发机器是32位还是64位?看起来服务器是64,所以如果它们不同,可能会有问题。

我到处都看到4.0.30319.1:服务器、我的桌面和虚拟机。我只是打电话给FSharpCodeProvider,所以我不知道传递了哪些命令行选项。我希望FSharpCodeProvider在服务器上传递与在其他环境中相同的选项。不幸的是,我对codedom提供程序了解不多。是的,非常相关。我认为引用32位版本的FSharp.Core.dll与引用64位版本的mscorlib.dll不匹配。顺便说一句,引用路径是错误的,它应该指向c:\program files\reference Assemblys\etc。使用ProcessExplorer我能够获得信息。在工作实例上与在非工作服务器上相同。“C:\ProgramFiles(x86)\Microsoft F#\v4.0\fsc.exe”-noframework--nologo-o:“C:\inetpub\wwwroot\Gobiner.DotNetPad.Web\App\u Data\Gobiner.CSharpPad.Eval.Evil1421939367.exe”“C:\WINDOWS\TEMP\1ailxen1.fs”是的,不要这样做。您确实需要一个能显式地
-r
FSharp.Core和mscorlib的命令行,这样您就可以获得每个命令行的正确版本。所以,看看你是否能让它添加这些显式引用。我的家庭计算机、虚拟机和服务器都是64位的。