我已经通过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,我应该安装什么才能把它放在那里?
更新
我尝试了一些事情,但没有改变结果:
C:\Program Files (x86)\Microsoft SDKs\F#\4.1
不存在,然后重新安装F#4.1 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
答案 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安装并重启,现在一切正常。