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



安装此版本后,不会生成任何涉及 F# 的内容,所有内容都会引发相同的异常:

error FS0193: Could not load file or assembly System.Buffers, Version=4.0.3.0, blablabla..

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

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

是的,这是一个已知问题,请参阅 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 Studio2019BuildToolsCommon7IDEPublicAssemblies*.dll" "C:Program Files (x86)Microsoft Visual Studio2019BuildToolsCommon7IDECommonExtensionsMicrosoftFSharp"

编辑:上面给出的源路径可能并不总是正确的,具体取决于您安装的 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

最新更新