Azure DevOps构建wapproj时报MSB4019找不到Sdk.NuGet.targets如何解决?
问题根因
该报错的核心诱因是通过UseDotNet@2任务单独安装的.NET Core 3.1.411 SDK与WAP打包项目依赖的DesktopBridge.targets路径不匹配:DesktopBridge.targets会优先从托管工具缓存的独立SDK路径查找Sdk.NuGet.targets,但该版本.NET Core 3.1 SDK的对应目录下不存在这个目标文件。此前流水线正常运行是因为旧版Windows-2019托管镜像预装的SDK和WAP组件版本适配,近期镜像更新或配置变动触发了路径优先级冲突。
排查解决步骤
- 优先移除
UseDotNet@2指定3.1.411版本的步骤,Windows-2019托管代理默认已预装兼容WAP项目的.NET Core 3.1 SDK,无需单独安装独立版本,避免SDK路径优先级冲突。 - 若必须固定使用3.1.411版本SDK,在MSBuild任务的参数中添加
/p:DisableImplicitNuGetTargets=true,强制DesktopBridge.targets不从独立SDK路径导入NuGet targets,改用VS 2019自带的对应目标文件。 - 调整NuGet还原范围:当前你仅还原了
**/*.csproj,WAP打包项目(*.wapproj)未执行还原,将还原步骤的项目匹配规则修改为**/*.csproj;**/*.wapproj,或直接使用MSBuild执行全解决方案还原:msbuild /t:Restore 你的解决方案名.sln,确保WAP项目的依赖也被正确还原。 - 检查WAP项目配置:打开*.wapproj文件,确认
<TargetPlatformVersion>配置不低于10.0.17763.0,与VS 2019的Desktop Bridge组件版本兼容。 - 强制使用VS自带MSBuild:在MSBuild任务中指定运行路径为
C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Current\Bin\MSBuild.exe,避免调用.NET Core SDK自带的MSBuild导致WAP项目兼容性问题。
内容的提问来源于stack exchange,提问作者Markissimo
相关产品推荐
相关产品推荐

