Azure CI/CD构建管道失败:引用旧版Microsoft.Data.SqlClient.SNI包
解决Azure构建管道中Microsoft.Data.SqlClient.SNI包版本冲突问题
问题背景
基于.NET Framework 4.7.1的MVC Web应用Azure构建管道执行失败,特性分支已将Microsoft.Data.SqlClient.SNI.1.1.0 NuGet包升级至3.0.2,但提交拉取请求后构建仍报错。解决方案包含多目标框架(.NET Framework 4.7.1 + .NET Core 8.0)的服务层项目,因1.1.0版本与.NET Core 8.0不兼容才升级到3.0.2,具体错误信息如下:
##[error]Test\Test.csproj(2480,5): Error : This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is ..\packages\Microsoft.Data.SqlClient.SNI.1.1.0\build\net46\Microsoft.Data.SqlClient.SNI.targets.
解决建议
- 清理项目文件中的硬编码旧版本引用:打开报错的
Test.csproj文件,搜索是否存在对Microsoft.Data.SqlClient.SNI.1.1.0的硬编码路径引用(比如错误里提到的.targets文件路径),将这些引用替换为3.0.2版本的对应路径,或改用NuGet自动引用方式,避免直接写带版本号的固定路径。 - 强制清理并重新还原NuGet包:在Azure构建管道中添加步骤,先执行
dotnet clean清理本地旧包缓存,再执行dotnet restore或nuget restore拉取最新的3.0.2版本包。如果使用经典管道,确保NuGet还原步骤指向解决方案文件,并启用强制还原选项。 - 检查多目标框架的包引用配置:针对同时面向.NET Framework 4.7.1和.NET Core 8.0的项目,确认
PackageReference节点配置正确,避免某一目标框架下仍引用旧版本包。可使用Condition属性为不同框架指定对应包版本,或统一使用兼容双框架的3.0.2版本。 - 验证Git提交内容:确认特性分支中所有相关项目文件(包括
.csproj和packages.config<如果存在>)都已正确更新至3.0.2版本,无旧版本引用遗漏提交。 - 清理Azure管道缓存:若构建管道启用了NuGet缓存,可能缓存了旧版本包,需清理现有缓存或调整缓存规则,确保新版本包能被正确拉取。
内容的提问来源于stack exchange,提问作者user3497702
相关产品推荐
相关产品推荐

