自從.netcore 3.1出來後,你們都想立馬升級到最新版本。我也是如此,微軟也對.netcore 3.1的官方組件不斷升級,幾乎每隔幾天就會有部分元包能夠升級。每次打開Nuget包管理器,「更新」的tab處總會有個數字暗示着你快點升級!一貫有代碼潔癖的同窗(包括我),都會堅決果斷的點擊「所有升級」。咱們老是幻想着使用更高的版本,能夠獲取更牛的功能和更快的性能。
惋惜,夢想是好的,結局倒是殘酷的。升級後,卻發現有不少錯誤。.netcore 3.1的確在性能方面有極大的提高,各個方面都比.netcore 2.2強多了,可是,其生態尚未徹底的發展起來,不少第3方組件依舊仍是netcore2.2的版本甚至更低。這個時候最讓人頭疼的就是包的版本問題,好比以下錯誤:app
MuXue.Zyiz.Net.WebAPI/MuXue.Zyiz.Net.WebAPI.csproj : error NU1605: Detected package downgrade: System.Threading.ThreadPool from 4.3.0 to 4.0.10. Reference the package directly from the project to select a different version.
error NU1605: Detected package downgrade的中文意思是「錯誤NU1605:檢測到包降級 」。你們都知道,元包裏還包含不少子的組件,多個元包之間引用的子組件版本不一致,就會形成這個錯誤。這種狀況在.netcore 3.1目前的狀況下常常出現。性能
根據找一找教程網官方教程的知道方案得出解決方案以下:spa
強制將版本不一致的包升級到統一的版本,(好比咱們這裏的System.Threading.ThreadPool).net
雙擊MuXue.Zyiz.Net.WebAPI.csproj項目,code
<ItemGroup> <PackageReference Include="AutoMapper" Version="9.0.0" /> <PackageReference Include="AutoMapper.Extensions.Microsoft.DependencyInjection" Version="7.0.0" /> <PackageReference Include="Consul" Version="0.7.2.6" /> <PackageReference Include="FluentValidation.AspNetCore" Version="8.6.1" /> <PackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="3.1.1" /> <PackageReference Include="Microsoft.EntityFrameworkCore" Version="3.1.1" /> <PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="3.1.1" /> <PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="3.1.1" /> <PackageReference Include="NLog.Web.AspNetCore" Version="4.9.0" /> <PackageReference Include="SkyAPM.Agent.AspNetCore" Version="0.9.0" /> <PackageReference Include="Swashbuckle.AspNetCore" Version="5.0.0" /> <PackageReference Include="System.Text.Json" Version="4.7.0" /> <PackageReference Include="System.Net.NameResolution" Version="4.3.0" /> <PackageReference Include="System.Threading.ThreadPool" Version="4.3.0" /> </ItemGroup>
看到這行代碼:blog
<PackageReference Include="System.Threading.ThreadPool" Version="4.3.0" />教程
將這個組件統一指定爲4.3.0版本,問題就解決了。rem