无法加载文件或程序集Microsoft.Bcl.AsyncInterfaces

49
由于Microsoft.Bcl.AsyncInterfaces存在问题,我无法使用SqlType提供程序。 我正在使用.NET 4.7.2和F# 4.7.0.0的最小程序。 我的Nuget软件包包含对以下引用的引用:

package id="Microsoft.Bcl.AsyncInterfaces" version="1.0.0" targetFramework="net472"

严重性代码说明项目文件行号抑制状态 错误FS3033类型提供程序'FSharp.Data.Sql.SqlTypeProvider'报告了一个错误: 无法加载所请求的一个或多个类型。 检索LoaderExceptions属性以获取更多信息。 细节:找不到文件或程序集'Microsoft.Bcl.AsyncInterfaces, Version = 1.0.0.0,Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51' 或其某个依赖项。 Das System kann die angegebene Datei nicht finden。 TestSqlProviderC:\Users\weism\source\repos\TestSqlProvider\TestSqlProvider\Program.fs 9 Active

有什么方法可以解决这个问题?

1
"Das System kann die angegebene Datei nicht finden" 的英语翻译是 "The system cannot find the file specified"。 - rmunn
你正在使用 .NET Core 吗?如果是的话,执行 dotnet restore 命令是否有任何修复作用? - VoronoiPotato
如果这个问题还存在,您能否发布此应用程序的csproj文件? - Mike Twc
11个回答

43

对我来说,安装Microsoft.Bcl.AsyncInterfaces(Nuget软件包)解决了这个问题。


1
只需正确的答案,将其安装到项目中,编译并运行即可解决问题 :) - user9852806

14
当你尝试在 dotnet core v3.1 项目中使用 Microsoft.EntityFrameworkCore v5 时,会出现此错误。要解决此问题,请将 Microsoft.EntityFrameworkCore 版本降级至最新的 v3 版本。

2
或者升级.NET Core到v5. =) - Vinicius Bassi
这对我有用...在包管理器设置中清除了所有NuGet缓存后。 - ayush mishra

13
对于.Net Core,这个问题基本上发生在我们使用分层架构时。只需确保在所有项目中使用的Microsoft.EntityFrameworkCore版本相同即可。

在我的情况下几乎是这样的。我安装了Microsoft.EntityFrameworkCore.InMemory版本5.0.7,它依赖于Microsoft.EntityFrameworkCore。所以,正如你提到的那样,一旦所有项目都有相同的版本,问题就解决了。 - Sebastian Inones

6

在我的 .NET 4.8 项目中我并不使用 Microsoft.Bcl.AsyncInterfaces。某些库需要版本1.0.0.0。我通过使用绑定重定向来解决了这个问题:

<dependentAssembly>
  <assemblyIdentity name="Microsoft.Bcl.AsyncInterfaces" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
  <bindingRedirect oldVersion="0.0.0.0-5.0.0.0" newVersion="5.0.0.0" />
</dependentAssembly>

在构建后,Microsoft.Bcl.AsyncInterfaces.dll 5 被复制到了 Bin 文件夹中。


3

我认为您只更新了一个层的软件包。而我在一个有三个层次(API、AdminTool和Data)的项目中工作,AdminTool层引用了Data层,所以我只在AdminTool层更新了所有软件包,因此出现了错误。我还在Data层和API层更新了软件包,这样问题就解决了。希望这可以帮到您。


0

我的 Entity Framework Core 只需要升级即可


0

确保您拥有该dll的唯一单个版本。另一个步骤是根据上面的评论在app.config中添加绑定重定向。


0
检查您已安装的nuget包——如果Microsoft.EntityFrameworkCore的版本与您的.net项目不同,可能会出现问题。例如-如果EntityFrameworkCore是v5.1.5或更高版本,并且您的项目dotnet core v3.1项目,则可能会出现问题。
为了解决这个问题,
  1. 降低Microsoft.EntityFrameworkCore的版本以与项目版本相等,例如v3版本。要降低版本,请在Visual Studio中的工具中单击--> Nuget Package Manager--> Manage Nuget package for Solutions--> 单击已安装的--->选择要降级的nuget package--> 卸载,然后选择相同的NuGet包,然后安装版本3.1.5或相关软件包。
或者
  1. 安装Microsoft.Bcl.AsyncInterfaces(Nuget包)

0

通过 NuGet 更新 Microsoft.Bcl.AsyncInterfaces 组件已经完成了所有必要的操作,包括在适当的配置文件中添加了 bindingRedirect 条目。

我还进行了其他清理工作。我清理了我的解决方案,删除了 bin 和 obj 目录条目,并清理了本地主机部署位置。

然而,我仍然遇到了这个错误。我查看了输出(我的应用程序是一个 .NET 4.8 MVC Web 应用程序,因此网页详细显示了错误日志),发现它在加载 SimpleInjector 时失败了。

我通过 NuGet 更新了 SimpleInjector 到最新版本,这样就修复了我的错误。

不幸的是,我没有保留错误页面的副本,所以无法向您展示我看到的内容,但重点是要详细检查输出或日志,看看应用程序尝试加载失败的程序集的位置,并更新调用该加载的程序集。


0

我成功地解决了这个问题,方法是从Microsoft.Bcl.AsyncInterfaces的csproj文件中移除<Private>True</Private>标签,然后重新安装这个NuGet包。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接