解决 .net core 中 nuget 包版本冲突问题

发表于:2018-6-07 09:20  作者:dudu   来源:51Testing软件测试网采编

字体: | 上一篇 | 下一篇 |我要投稿 | 推荐标签: DotNet 软件开发 dotnet

  今天在一个 asp.net core 项目中遇到了 nuget 包版本冲突的问题,错误信息如下:
  Version conflict detected for Microsoft.AspNet.WebApi.Client. Reference the package directly from the project to resolve this issue.
   Cnblogs.Zzk.ServiceAgent -> Cnblogs.Net 2.0.1 -> Microsoft.AspNet.WebApi.Client (>= 5.2.6)
   Cnblogs.Zzk.Web -> Microsoft.AspNetCore.App 2.1.0-rc1-final -> Microsoft.AspNet.WebApi.Client (= 5.2.4)
  Cnblogs.Zzk.Web 是一个基于 asp.net core 2.1 rc 1 的项目,所引用的 nuget 包 Microsoft.AspNetCore.App 引用了 Microsoft.AspNet.WebApi.Client 5.2.4 ,而引用的 Cnblogs.Zzk.ServiceAgent 项目所引用的 nuget 包 Cnblogs.Net 则引用了 Microsoft.AspNet.WebApi.Client 5.2.6
  <Project Sdk="Microsoft.NET.Sdk.Web">
    <PropertyGroup>
      <TargetFramework>netcoreapp2.1</TargetFramework>
    </PropertyGroup>
    <ItemGroup>
      <ProjectReference Include="..\Cnblogs.Zzk.ServiceAgent\Cnblogs.Zzk.ServiceAgent.csproj">
      </ProjectReference>
    </ItemGroup>
    <ItemGroup>
      <PackageReference Include="Microsoft.AspNetCore.App" />
    </ItemGroup>
  </Project>

  版本冲突就是由于这两个地方引用的 Microsoft.AspNet.WebApi.Client 版本不一致。
  要解决这个版本冲突问题有三个方法:
  1)升级 Microsoft.AspNetCore.App 所引用的 Microsoft.AspNet.WebApi.Client ;
  2)降级 Cnblogs.Net 所引用的 Microsoft.AspNet.WebApi.Client ;
  3)既不升级也不降级,通过某种兼容处理方式解决版本冲突。
  第 1 种方法此路不通,Microsoft.AspNetCore.App 不是我们自己的项目。
  第 2 种方法退而求次,但不想因为这个问题而降级。
  于是,选择了第 3 条路。
  如果是 .net framework 项目可以通过 assembly  binding redirect 机制解决,添加下面的配置即可
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="" publicKeyToken="" />
        <bindingRedirect oldVersion="" newVersion="" />
      </dependentAssembly>
    </assemblyBinding>
  </runtime>

  但 .net core 中根本没有 assembly  binding redirect 机制,那怎么办?
  非常好办,只要认真看了错误提示信息:
  Version conflict detected for Microsoft.AspNet.WebApi.Client. Reference the package directly from the project to resolve this issue.
  只要在 Cnblogs.Zzk.Web 项目中添加 Microsoft.AspNet.WebApi.Client 的引用,并且使用冲突中的最高版本,比如这里引用 5.2.6 ,
  <ItemGroup>
    <PackageReference Include="Microsoft.AspNet.WebApi.Client" Version="5.2.6" />
  </ItemGroup>

  就可以简单粗暴地解决 nuget 包版本冲突问题。


上文内容不用于商业目的,如涉及知识产权问题,请权利人联系博为峰小编(021-64471599-8017),我们将立即处理。

Python+Selenium大型电商项目(京东商城)实战直播,优惠名额抢占中>>

评 论

论坛新帖

顶部 底部


建议使用IE 6.0以上浏览器,800×600以上分辨率,法律顾问:上海瀛东律师事务所 张楠律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2018, 沪ICP备05003035号
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪公网安备 31010102002173号

51Testing官方微信

51Testing官方微博

扫一扫 测试知识全知道