无法加载文件或程序集'System.Runtime.CompilerServices.Unsafe'

时间:2018-12-22 03:37:19

标签: f# npgsql f#-data

尝试在postgres中使用SQLTypeProvider时,运行时出现以下错误

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是否应该位于项目子目录之一中,编译器可以找到它?

3 个答案:

答案 0 :(得分:1)

我在使用统一容器时遇到了同样的问题,从Nuget更新此dll后,问题解决了

答案 1 :(得分:1)

我在web.config中修复了它包含的条目 System.Runtime.CompilerServices.Unsafe

答案 2 :(得分:1)

在CMD中试用

您可以在(C:\ Program Files(x86)\ Microsoft SDKs \ Windows \ v10.0A \ bin \ NETFX 4.8 Tools>)中找到gacutil,并在bin文件夹中找到其他已安装的框架,并尝试对其他' .. \ bin \ NETFX xx工具的框架

C:\ Program Files(x86)\ Microsoft SDKs \ Windows \ v10.0A \ bin \ NETFX 4.8 Tools>

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