自從.netcore 3.1出來后,大家都想立馬升級到最新版本。我也是如此,微軟也對.netcore 3.1 的官方組件不斷升級,幾乎每隔幾天就會有部分元包可以升級。每次打開Nuget包管理器,“更新”的tab處總會有個數(shù)字暗示著你快點升級!一向有代碼潔癖的同學(xué)(包括我),都會毫不猶豫的點擊“全部升級”。我們總是幻想著使用更高的版本,可以獲取更牛的功能和更快的性能。
可惜,夢想是好的,結(jié)局卻是殘酷的。升級后,卻發(fā)現(xiàn)有很多錯誤。.netcore 3.1的確在性能方面有極大的提升,各個方面都比.netcore 2.2強多了,但是,其生態(tài)還沒有完全的發(fā)展起來,很多第3方組件依舊還是netcore2.2的版本甚至更低。這個時候最讓人頭疼的就是包的版本問題,比如如下錯誤:
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目前的情況下經(jīng)常出現(xiàn)。
根據(jù) 官方教程 的知道方案得出解決方案如下:
強制將版本不一致的包升級到統(tǒng)一的版本,(比如我們這里的System.Threading.ThreadPool)
雙擊MuXue.Zyiz.Net.WebAPI.csproj項目,
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
< 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 > |
看到這行代碼:
1
|
< PackageReference Include = "System.Threading.ThreadPool" Version = "4.3.0" /> |
將這個組件統(tǒng)一指定為4.3.0版本,問題就解決了。
到此這篇關(guān)于asp.net core3.1 引用的元包dll版本兼容性問題解決方案的文章就介紹到這了,更多相關(guān)asp.net core dll兼容性 內(nèi)容請搜索服務(wù)器之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持服務(wù)器之家!
原文鏈接:https://www.cnblogs.com/puzi0315/p/12556138.html