无法加载文件或程序集“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 中添加程序集引用,位于 <configuration></configuration>
标记内:
<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