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

Posted

技术标签:

【中文标题】无法加载文件或程序集“System.Runtime.CompilerServices.Unsafe”【英文标题】:Could not load file or assembly 'System.Runtime.CompilerServices.Unsafe' 【发布时间】:2019-05-22 09:39:39 【问题描述】:

尝试将 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 不应该位于编译器可以找到的项目子目录之一中吗?

【问题讨论】:

你解决过这个问题吗?我今天碰到了。我正在使用 macOS。谢谢 【参考方案1】:

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

【讨论】:

【参考方案2】:

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

【讨论】:

【参考方案3】:

在 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"

【讨论】:

它对我不起作用,所以最后我使用 NuGet 包管理器将有问题的项目卸载并重新安装。

以上是关于无法加载文件或程序集“System.Runtime.CompilerServices.Unsafe”的主要内容,如果未能解决你的问题,请参考以下文章

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

Visual Studio 2017 - 无法加载文件或程序集“System.Runtime,Version=4.1.0.0”或其依赖项之一

无法在Visual Studio Web Api项目上加载System.runtime dll

部署 Azure 函数时无法从程序集“System.Runtime”加载类型“System.IO.Path”

能加载文件或程序集“Aspose.Cells”或它的某一个依赖项。无法验证强名称签名

无法加载文件或程序集,但已加载