报错的具体关键文本如下:
无法加载文件或程序集“Microsoft.Bcl.AsyncInterfaces、Version=6.0.0.0、Culture=neutral、PublicKeyToken=XX”或其依赖项之一
过程回顾:
我新建了一个.net framework web项目,这个项目需要用到另外两个库,待我从nuget上获取了这两个库后,整个程序编译没有问题,但一运行就出现了如上的报错,明显这是整个项目所依赖的库缺失了,检查发现我本机的Microsoft.Bcl.AsyncInterfaces,其Version=9.0.0.0,于是将其降级到6.0.0.0,但这个时候又出现问题了,system.memory的版本号必须为4.0.1.0,我全网找了下,根本没有这个版本,所以想把各个库的版本全部统一,这事儿无法实现。
于是我们开始了另外一条路,就是用现有版本来代替所需版本。具体操作是修改web.config里的内容,修改片段如下:
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="Microsoft.Bcl.AsyncInterfaces" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-9.0.0.0" newVersion="9.0.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Memory" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.0.2.0" newVersion="4.0.2.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
做完如上操作后,再次编译运行,成功。