FSharp Interactive将无法启动;找不到System.Runtime.dll

时间:2017-06-02 15:04:07

标签: .net f# fsi

我已经通过Visual Studio 2017安装程序安装了FSharp 4.1,但是FSI拒绝启动:

PS C:\Program Files (x86)\Microsoft SDKs\F#\4.1\Framework\v4.0> .\fsi

Unhandled Exception: System.IO.FileNotFoundException: Could not load file or assembly
'System.Runtime, Version=4.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one
of its dependencies. The system cannot find the file specified.
   at Microsoft.FSharp.Compiler.Interactive.Shell.MainMain(String[] argv)

我认为我在PATH变量或其他东西中遗漏了一些东西,但是尽管有几次重新安装和修复我无法理解这个错误。

FSI在哪里寻找这个dll,我应该安装什么才能把它放在那里?

更新

我尝试了一些事情,但没有改变结果:

  • 通过VS 2017安装程序删除F#4.1,验证C:\Program Files (x86)\Microsoft SDKs\F#\4.1不存在,然后重新安装F#4.1
  • 卸载我已安装的所有.NET Core版本
  • 删除似乎没有关注它的安装程序的C:\Program Files (x86)\Microsoft SDKs\F#\4.0目录。 (该目录中的FSI在删除之前工作了......)

我已将融合日志转储到zip文件并将其on my Google Drive。有一大堆失败的绑定,System.Runtime, Version 4.1.0.0就是其中之一。

此处提交的问题:https://github.com/Microsoft/visualfsharp/issues/3178

2 个答案:

答案 0 :(得分:2)

因此,正在执行的二进制文件是编译器的coreclr版本。 vs安装在该目录中的编译器版本是编译器的桌面版本。

我认为coreclr版本不知何故被复制到那里。为了解决这个问题,我会这样做: *运行vs setup,取消选择F#编程工具。

一旦VS安装程序卸载了F#。

删除编译器目录:" C:\ Program Files(x86)\ Microsoft SDKs \ F#\ 4.1"

重新运行与设置并选择F#编程工具。

如果之后仍然有重复,那么请在https://github.com/Microsoft/visualfsharp

打开一个问题

由于

凯文

答案 1 :(得分:0)

现在已经解决over at github,但为了完整起见,这里有一个摘要。

问题在于,由于某种原因,我在GAC中注册了FSharp.Core 4.1.0.0:

C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise>gacutil /l FSharp.Core
Microsoft (R) .NET Global Assembly Cache Utility.  Version 4.0.30319.0
Copyright (c) Microsoft Corporation.  All rights reserved.

The Global Assembly Cache contains the following assemblies:
  FSharp.Core, Version=2.3.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL
  FSharp.Core, Version=4.4.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL
  FSharp.Core, Version=4.4.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL

Number of items = 3

第三个条目不应该在那里。我删除了:

gacutil /uf "FSharp.Core, Version=4.4.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL"

之后,FSI和dotnet new开始正常工作。为了让Visual Studio工作,我还必须修复我的VS安装并重启,现在一切正常。