代码之家  ›  专栏  ›  技术社区  ›  sashang

无法加载文件或程序集的系统。运行时。编译器服务。不安全的

  •  0
  • sashang  · 技术社区  · 6 年前

    尝试在postgres中使用SQLTypeProvider时,我在运行时遇到以下错误

    dotnet build
    

    错误FS3033:类型提供程序的FSharp。数据Sql。SqlTypeProvider' 报告错误:无法加载文件或程序集 “系统。运行时。编译器服务。不安全,版本=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 >
    

    错误消失了,但我不明白为什么。修复看起来真的很奇怪。为什么我要把它指向我项目之外的文件?系统不应该这样吗。运行时。编译器服务。不安全的dll是否位于project的某个子目录中,编译器可以在其中找到它?

    1 回复  |  直到 4 年前
        1
  •  7
  •   Maryam    5 年前

    我在unity容器上也遇到了同样的问题,在从Nuget更新了这个dll之后,我的问题得到了解决

        2
  •  3
  •   Giancarlo Molina    4 年前

    我在网络上解决了这个问题。配置包含 系统运行时。编译器服务。不安全的

        3
  •  3
  •   Prashant Manjule    4 年前

    在CMD中尝试一下,

    您可以在(C:\Program Files(x86)\Microsoft SDK\Windows\v10)中找到gacutil。0A\bin\NETFX 4.8工具>),和其他安装在bin文件夹中的框架,尝试为其他“”运行相同的命令。。\bin\NETFX x.x工具的框架(如有必要)

    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”