F # сломан в инструментах сборки VS 2019 16.6.0 - PullRequest
5 голосов
/ 29 мая 2020

После установки этой версии ничего, что касается F #, не будет построено, все выдает одно и то же исключение:

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

Очевидно, это не имеет ничего общего с тем, что я создаю. Такая же проблема возникает даже при попытке выполнить let x = 3 в fsi.exe.

У кого-нибудь еще была эта проблема?

1 Ответ

8 голосов
/ 29 мая 2020

Да, это известная проблема, см. https://github.com/dotnet/fsharp/issues/9295.

Пока следующее исправление еще не вышло, вы можете решить его, вручную скопировав отсутствующее сборки . Точный список недостающих сборок указан в этом комментарии . Кевин Рэнсом объяснил причину, по которой программа установки для MSBuild не получила новые зависимости для fsc.exe.

Обратите внимание, что в FSI из Visual Studio не должно быть этой проблемы, и при сборке из в Visual Studio 2019. Насколько я понимаю, затронуты только инструменты MSBuild.

Для потомков, в случае, если ссылки go мертвы, решение проблемы с 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"

Изменить: указанный выше исходный путь может не всегда быть правильным, в зависимости от того, какие версии 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 \ Сообщество \ Common7 \ IDE \ PublicAssemblies
  • C: \ Program Files (x86) \ Microsoft Visual Studio \ 2019 \ Предварительный просмотр \ 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
...