You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

从GitHub Package Registry安装NuGet包遇401未授权问题求助

解决GitHub Packages NuGet包安装401及全局源显示问题

一、先搞定401未授权的核心问题

你可能踩了GitHub Packages的一个常见坑:哪怕是公开的NuGet包,访问GitHub Packages源时也必须提供身份验证凭据——这和NuGet.org的公开包逻辑不一样,你登录GitHub账号后,Visual Studio的NuGet管理器并不会自动复用这个登录信息,得手动配置token才行:

  • 先检查你的Personal Access Token(PAT)权限:确保它包含read:packages权限,如果之前生成的token漏了这个,重新去Settings→Developer settings→Personal access tokens生成一个,记得勾选read:packagesrepo(如果包关联了仓库的话)。
  • 重新配置NuGet源的凭据:
    • 命令行方式更新:
      dotnet nuget update source github --username [你的GitHub用户名] --password [你的PAT]
      
    • Visual Studio操作:打开NuGet包管理器→设置→包源,找到你添加的GitHub源,点击「编辑」,在凭据栏输入你的GitHub用户名,密码填你的PAT(注意不是GitHub登录密码!),保存后再尝试浏览。
  • 确认组织包的访问设置:去组织的Settings→Packages→找到你的包,检查「Visibility」是「Public」,且「Access」里允许「Everyone (public)」访问。

二、为什么包不在全局NuGet源显示?

这里你可能混淆了两个平台的定位:

  • GitHub Packages是GitHub提供的私有/半私有包托管服务,它的包不会自动同步到官方NuGet.org的全局源。只有当你把包发布到NuGet.org时,才会在全局NuGet源里被所有人搜到。
  • 如果希望其他用户不用添加自定义源就能安装你的包,你需要把包上传到NuGet.org(可以和GitHub Packages同步推送),而不是只上传到GitHub Packages。

额外排查小技巧

  • 核对源地址拼写:https://nuget.pkg.github.com/[组织名]/index.json里的组织名要和你上传包时的完全一致(GitHub大小写不敏感,但源地址里尽量匹配实际名称)。
  • 清除NuGet缓存:旧缓存的凭据可能搞事情,用dotnet nuget locals all --clear清掉缓存后再重试。

内容的提问来源于stack exchange,提问作者Pieterjan

火山引擎 最新活动