VS 构建工具 2019 16.6.0 中的 F# 损坏

Ben*_*jol 6 f#

安装此版本后,不会构建任何涉及 F# 的内容,一切都会引发相同的异常:

error FS0193: Could not load file or assembly System.Buffers, Version=4.0.3.0, blablabla..
Run Code Online (Sandbox Code Playgroud)

显然这与我正在构建的内容无关。即使尝试let x = 3在 fsi.exe 中执行也有同样的问题。

还有其他人有这个问题吗?

Abe*_*bel 9

是的,这是一个已知问题,请参阅https://github.com/dotnet/fsharp/issues/9295

虽然下一个修复程序尚未发布,但您可以通过手动复制丢失的程序集来解决它。此注释中提到了缺少程序集的确切列表。原因由 Kevin Ransom 解释为 MSBuild 的安装程序没有获得fsc.exe.

请注意,Visual Studio 中的 FSI 不应该有这个问题,也不应该在 Visual Studio 2019 中构建。按照我的理解,只有 MSBuild 工具受到影响。

对于后代,如果链接失效,Github 问题中的解决方法是将 dll 复制过来:

copy "C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\Common7\IDE\PublicAssemblies\*.dll" "C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\Common7\IDE\CommonExtensions\Microsoft\FSharp"
Run Code Online (Sandbox Code Playgroud)

编辑:上面给出的源路径可能并不总是正确的,这取决于您安装的 VS 版本。或者,尝试:

  • C:\Program Files (x86)\Microsoft Visual Studio\2019\ Professional \Common7\IDE\PublicAssemblies
  • C:\Program Files (x86)\Microsoft Visual Studio\2019\ Enterprise \Common7\IDE\PublicAssemblies
  • C:\Program Files (x86)\Microsoft Visual Studio\2019\ Community \Common7\IDE\PublicAssemblies
  • C:\Program Files (x86)\Microsoft Visual Studio\2019\ Preview \Common7\IDE\PublicAssemblies

如果您只想复制所需的最小集,只需复制这些文件,即差异集:

System.Buffers.dll
System.Memory.dll
System.Numerics.Vectors.dll
System.Reflection.Metadata.dll
System.Resources.Extensions.dll
System.Runtime.CompilerServices.Unsafe.dll
System.Threading.Tasks.Dataflow.dll
Run Code Online (Sandbox Code Playgroud)