无法加载文件或程序集“System.Buffers,版本 = 4.0.2.0 ...”

Posted

技术标签:

【中文标题】无法加载文件或程序集“System.Buffers,版本 = 4.0.2.0 ...”【英文标题】:Could not load file or assembly 'System.Buffers, Version=4.0.2.0...' 【发布时间】:2020-11-11 02:31:09 【问题描述】:

在使用 VS config 添加新配置后尝试调用 MongoClient 类的 GetDatabase 方法时出现以下异常。经理:

Could not load file or assembly 'System.Buffers, Version=4.0.2.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)

我安装了最新的 System.Buffer nuget 包 v4.5.1,在我的 app.config 中创建了dependentAssembly,并在我的 .csproj 文件中创建了 Reference,但我仍然遇到同样的问题。出于某种原因,它尝试使用 v4.0.2 引用 System.Buffer。有没有人遇到过类似的错误,你是怎么解决的?

【问题讨论】:

你做了干净的构建吗?当 Net 更改时,obj 文件的依赖项不使用 Net 版本。所以你必须做一个干净的构建或删除项目的 bin 文件夹。还要检查 bin 文件夹中的最新 dll 是否在正确的文件夹中(调试/发布)。 请尝试在CMD中输入System.Buffer nuget package v4.5.1(run as administrator.run cd xxxx(xxxx\packages\System.Buffers.4.5.0\lib\netstandard2.0),然后输入:gacutil /i System.Buffers.dll。可以参考this similar issue。完成后请运行update-package -reinstall在包管理器控制台下重新安装包。此外,您可以尝试在csproj文件中将Version=4.0.2.0更改为Version=4.0.3.0 如果有帮助请告诉我们。 jdweng:当然。仍然看到同样的问题。 ***.com/users/12450747/perry-qian-msft 非常感谢!它对我有用。 【参考方案1】:

最简单的方法是使用 Nuget 包管理器,将 system.buffers 降级到任何较低版本,然后再次升级到最新版本。

【讨论】:

【参考方案2】:

无法加载文件或程序集“System.Buffers,版本=4.0.2.0…”

解决方案

1) 使用 CMD(以管理员身份运行)并输入

 cd xxxx(xxxx\packages\System.Buffers.4.5.1\lib\netstandard2.0))

运行

gacutil /i System.Buffers.dll

那么,完成后请运行package manager console下的update-package -reinstall重新安装包。

2)您可以尝试在csproj文件中将Version=4.0.2.0改为Version=4.0.3.0

另外还有a similar issue可以参考。

【讨论】:

【参考方案3】:

另一种解决方案:只需在生成异常的项目的Web.config 文件中删除对程序集的引用。

引用可能如下所示:

<dependentAssembly>
  <assemblyIdentity name="System.Text.Encodings.Web" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
  <bindingRedirect oldVersion="0.0.0.0-4.0.4.0" newVersion="4.0.4.0" />
</dependentAssembly>

【讨论】:

【参考方案4】:

就我而言,我必须在已在 Azure 应用服务中发布的 web.config 中添加程序集引用,位于 &lt;configuration&gt;&lt;/configuration&gt; 标记内:

<runtime>
  <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
    <dependentAssembly>
      <assemblyIdentity name="System.Buffers" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
      <bindingRedirect oldVersion="0.0.0.0-4.0.3.0" newVersion="4.0.3.0" />
    </dependentAssembly>
  </assemblyBinding>
</runtime>

【讨论】:

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

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

无法加载文件或程序集 'PayPalAdaptivePaymentsSDK,版本 = 2.12.117.0

无法加载文件或程序集。找到的程序集的清单定义与程序集引用不匹配

无法加载文件或程序集'netstandard,版本 = 2.0.0.0

无法加载文件或程序集 此处的程序集名称 或其依赖项之一。访问被拒绝

无法加载文件或程序集或其依赖项之一