GitHub工作流中dotnet restore无法找到私有GitHub包源的NuGet包
解决GitHub Actions中dotnet restore找不到私有NuGet包的问题
以下是排查和解决NU1101错误的几个关键方向:
验证GITHUB_TOKEN的权限
默认的GITHUB_TOKEN权限有限,无法访问组织内的私有包仓库。需要在工作流的job中明确添加权限配置:jobs: build: runs-on: ubuntu-latest permissions: packages: read # 必须添加该权限以读取私有包 steps: # 其他步骤(如checkout、setup .NET)... - name: 添加私有NuGet源 run: | dotnet nuget add source --username 任意用户名 --password ${{ secrets.GITHUB_TOKEN }} --store-password-in-clear-text --name github "https://nuget.pkg.github.com/你的组织名/index.json" - name: 还原依赖 run: dotnet restore注意:用户名可填任意值,GitHub包认证仅校验密码(即GITHUB_TOKEN)。
确认私有源URL正确性
检查添加源的URL是否为组织级包仓库地址:https://nuget.pkg.github.com/你的组织名/index.json,不要误写为单个仓库的地址。查看工作流日志中的源添加记录,确认URL无误。检查包的存在与权限
登录GitHub组织的Packages页面,确认Comp.Backend.WebAPI.Client包已成功推送,且包的可见性设置为私有,同时当前工作流所在的仓库被授权访问该包。强制指定restore源
避免源优先级或默认源覆盖问题,在restore时明确指定两个源:dotnet restore --source https://api.nuget.org/v3/index.json --source https://nuget.pkg.github.com/你的组织名/index.json排查自定义PAT的作用域(如果使用的话)
若你没有使用默认GITHUB_TOKEN而是自定义PAT,需确保该PAT拥有read:packages权限,并且属于有权访问目标包的账户。
内容的提问来源于stack exchange,提问作者Sam Vanhoutte
相关产品推荐
相关产品推荐

