解决 .net core 中 nuget 包版本冲突问题
今天在一个 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 包版本冲突问题。
- svn冲突问题详解 SVN版本冲突解决详解
- android应用版本升级时签名冲突问题的原因及解决办法
- Maven中jar版本冲突问题的解决
- 解决shiro和quartz2 版本冲突问题
- 如何解决SpringBoot与ODataJClient版本冲突的问题?
- 【转】Windows7 下安装 JDK 7 时版本冲突问题解决
- Nuget版本冲突的问题
- 解决java多个版本冲突问题
- 使用python搭建Django应用程序步骤及版本冲突问题解决
- maven 工具的依赖树以及解决版本包冲突问题
- unity3d SVN 版本冲突问题的解决
- spring学习(官网)——解决版本冲突问题
- 解决maven依赖传递中的版本冲突问题
- 解决Jetty下EL版本冲突的问题
- Android 版本更新签名冲突的问题以及注意事项,已解决
- retrofit2和rxjava2一起使用时的rxjava.jar版本冲突问题解决
- 程序集引用版本冲突问题的解决办法:合并依赖项
- 利用JAVA中的endorsed技术解决jar包版本冲突的问题
- svn冲突问题详解 SVN版本冲突解决详解