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

    发布:51Code 时间: 2018-08-13 10:30

  • 今天在一个 asp.net core 项目中遇到了 nuget 包版本冲突的问题,错误信息如下: Version conflict detected for Microsoft.AspNet.WebApi.Client. Reference the package directly from the project to resolve this issue. Cnbl...

  • 今天在一个 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 包版本冲突问题。

    来自:dudu
    原文链接:51Testing软件测试网采编
    上文内容不用于商业目的,如涉及知识产权问题,请权利人联系博为峰小编(021-64471599-8103),我们将立即处理。
  • 上一篇:Jimu :.Net Core 分布式微服务框架介绍

    下一篇:WebApiClient的JsonPatch局部更新

网站导航
Copyright(C)51Code软件开发网 2003-2018 , 沪ICP备16012939号-1