Не удалось загрузить файл или сборку System.Runtime.CompilerServices.Unsafe

Пытаясь использовать SQLTypeProvider с postgres, я получаю следующую ошибку при запуске

dotnet build

ошибка FS3033: поставщик типа «FSharp.Data.Sql.SqlTypeProvider» сообщил об ошибке: не удалось загрузить файл или сборку «System.Runtime.CompilerServices.Unsafe, версия = 4.0.4.0, культура = нейтральная, PublicKeyToken = b03f5f7f11d50a3a». Система не может найти указанный файл. [/home/sashan/code/titan/src/Server/Server.fsproj]

мой поставщик данных:

type SQL = SqlDataProvider< 
                  ConnectionString = pg_dev_conn_string,
                  DatabaseVendor = Common.DatabaseProviderTypes.POSTGRESQL,
                  UseOptionTypes = true >

Если я изменю его на следующий

type SQL = SqlDataProvider< 
              ConnectionString = pg_dev_conn_string,
              DatabaseVendor = Common.DatabaseProviderTypes.POSTGRESQL,
              ResolutionPath = "/home/sashan/code/dotnet/2.1.500/sdk/NuGetFallbackFolder/system.runtime.compilerservices.unsafe/4.5.1/lib/netcoreapp2.0",
              UseOptionTypes = true >

Ошибка исчезает, но я не понимаю почему. Исправление кажется действительно странным. Почему я должен указывать его на файл вне моего проекта? Разве System.Runtime.CompilerServices.Unsafe.dll не должен находиться где-нибудь в одном из подкаталогов проекта, где его может найти компилятор?


person sashang    schedule 22.12.2018    source источник
comment
Вы когда-нибудь это решали? Я столкнулся с этим сегодня. Я использую macOS. Спасибо   -  person costa    schedule 24.09.2019


Ответы (3)


У меня была такая же проблема с контейнером единства, и после обновления этой dll из Nuget моя проблема была решена

person Maryam    schedule 18.02.2019

Я исправляю это, добавляя в web.config запись, содержащую System.Runtime.CompilerServices.Unsafe

person Giancarlo Molina    schedule 11.04.2020

Попробуйте в CMD

вы можете найти gacutil в (C: \ Program Files (x86) \ Microsoft SDKs \ Windows \ v10.0A \ bin \ NETFX 4.8 Tools ›) и других установленных фреймворках в папке bin, попробуйте запустить те же команды для других '.. \ каркасы bin \ NETFX xx Tools, если необходимо

C: \ Program Files (x86) \ Microsoft SDK \ Windows \ v10.0A \ bin \ NETFX 4.8 Инструменты ›

gacutil -i C: \ Program Files \ dotnet \ sdk \ 3.1.401 \ Sdks \ Microsoft.NET.Sdk.WindowsDesktop \ tools \ net472 \ System.Runtime.CompilerServices.Unsafe.dll

person Prashant Manjule    schedule 10.11.2020
comment
У меня это не сработало, поэтому, наконец, я использовал диспетчер пакетов NuGet, чтобы удалить проблемный элемент и переустановить его. - person Jonathan Rosenne; 27.11.2020
comment
ок, это сработало? - person Prashant Manjule; 29.11.2020
comment
Да, это сработало. - person Jonathan Rosenne; 29.11.2020