.NET 6项目本地构建正常,Pipeline中net6.0-windows构建失败求助
报错信息
C:\Program Files\dotnet\sdk\7.0.100\Sdks\Microsoft.NET.Sdk\targets\Microsoft.PackageDependencyResolution.targets(267,5):
C:\Agent\1\s\my-Applications\Process\Executor\obj\project.assets.json'
doesn't have a target for 'net6.0-windows'. Ensure that restore has run and that you have included 'net6.0-windows'
可能原因及解决办法
确保Pipeline执行完整的restore步骤
Pipeline构建任务可能跳过了restore,或restore未正确识别目标框架。在构建前显式运行:dotnet restore --runtime win-x64或指定目标框架:
dotnet restore -f net6.0-windows锁定Pipeline使用的.NET SDK版本
报错显示使用的是.NET 7 SDK,虽兼容.NET 6项目,但对Windows特定目标框架的处理可能存在差异。建议在Pipeline中添加SDK安装步骤,明确指定.NET 6版本(如6.0.408),避免自动使用高版本SDK。完善项目文件的Windows特定配置
切换到net6.0-windows后,确保项目文件包含必要的Windows相关属性,即使是控制台应用,部分依赖也需要这些属性触发正确的restore目标:<TargetFramework>net6.0-windows</TargetFramework> <!-- 按需添加,比如用到WinForms或WPF时 --> <UseWindowsForms>true</UseWindowsForms> <UseWPF>true</UseWPF>清理Pipeline工作目录缓存
Pipeline工作目录可能残留之前net6.0构建的缓存文件,导致restore未更新project.assets.json。构建前添加清理步骤:# Linux/macOS rm -r obj bin # Windows rd /s /q obj bin
内容的提问来源于stack exchange,提问作者Aditya Dalai

