我有一个带有net47类库的asp.net core 2.0项目。该库使用最新版本的Microsoft.AspNet.WebApi.Client包。
当我将这个dll复制并粘贴到一个完全不同的解决方案中时,Webforms项目和DataLayer类库都以.NET Framework 7.1为目标。
Webforms解决方案中的DataLayer还安装了Microsoft.AspNet.WebApi.Client,但添加了以下内容:
<dependentAssembly>
<assemblyIdentity name="System.Net.Http" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.1.1.2" newVersion="4.1.1.2" />
</dependentAssembly>
我最终得到以下错误:
无法加载文件或程序集'System.Net.Http,Version = 4.2.0.0, Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a'或其中一个 依赖。定位程序集的清单定义没有 匹配程序集引用。 (HRESULT异常:0x80131040)
幸运的是,我能够通过以下方式解决问题:
<dependentAssembly>
<assemblyIdentity name="System.Net.Http" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.2.0.0" newVersion="4.1.1.2" />
</dependentAssembly>
为什么我必须重定向才能使用版本4.1.1.2。为什么它不能与版本4.2.0.0一起使用?为什么它首先要求4.2.0.0?我假设4.2.0.0来自ASP.NET Core net47类库引用。