Linux Jenkins代理执行Dotnet构建时Sdk.targets找不到错误
解决Linux Jenkins代理上dotnet publish找不到Sdk.targets的问题
解决方案
1. 修正DOTNET_ROOT环境变量
日志显示当前DOTNET_ROOT指向/apps/jenkins-agent/.dotnet,但实际.NET SDK安装在/usr/lib64/dotnet,这会导致dotnet工具错误定位SDK路径。执行以下命令修正:
export DOTNET_ROOT='/usr/lib64/dotnet' export PATH="$DOTNET_ROOT:$PATH"
修正后重新执行dotnet publish命令。
2. 安装ASP.NET Core Workload
dotnet --info输出显示无已安装的workload,即使目标文件存在,ASP.NET Core SDK的workload未注册也会导致MSBuild解析失败。执行以下命令安装:
dotnet workload install aspnet
安装完成后再次尝试构建。
3. 验证Jenkins用户的文件权限
确认Jenkins运行用户对目标文件有读取权限,执行:
# 替换jenkins_user为实际Jenkins代理用户名 sudo -u jenkins_user cat /usr/lib64/dotnet/sdk/8.0.103/Sdks/Microsoft.NET.Sdk.Web/Sdk/Sdk.targets
若提示权限不足,执行:
sudo chmod -R o+r /usr/lib64/dotnet/sdk/8.0.103/Sdks/
4. 清理缓存并移除--no-restore参数
缓存损坏可能导致路径解析异常,先清理缓存:
dotnet nuget locals all --clear
然后移除--no-restore参数重新发布:
dotnet publish -c release -o /apps/jenkins-agent/agent/workspace/rk_CHATBOTS_Dotnet_Deploy_master/appdeploy
内容的提问来源于stack exchange,提问作者neelamari
相关产品推荐
相关产品推荐

