解決 .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 包版本沖突問題。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM