这不是一件容易的事,但这是解决方案(经过 2 天的挣扎)
首先在 Github 中生成 PAT (Personal Access Token)
按照以下步骤生成 PAT
选择 read:packages 选项非常重要
Github 将只显示一次 PAT,因此请务必将其复制到保存位置,否则,您必须再次生成它
现在有了PAT,将Nuget.Config
文件添加到您的项目文件
的内容应该如下所示
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<packageSources>
<clear />
<add key="github" value="https://nuget.pkg.github.com/OWNER/index.json" />
</packageSources>
<packageSourceCredentials>
<github>
<add key="Username" value="USERNAME" />
<add key="ClearTextPassword" value="TOKEN" />
</github>
</packageSourceCredentials>
</configuration>
您必须更换:
- USERNAME 与您在 GitHub 上的用户帐户的名称。
- TOKEN 与您的个人访问令牌(您在步骤 1 中生成的令牌)。
- 拥有包含您的项目的存储库的用户或组织帐户名称的 OWNER。
您必须重新启动 Visual Studio 甚至重新启动 PC这很重要
之后打开终端并复制并粘贴(可能有一些修改)Github 给你安装包的语句
现在您已准备好获取 Package。
更新
如何为团队配置 github nuget 包?
配置nuget.config
使用环境变量:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<packageSources>
<add key="NuGet official package source" value="https://api.nuget.org/v3/index.json" />
<add key="Github" value="https://nuget.pkg.github.com/OWNER/index.json" />
</packageSources>
<packageSourceCredentials>
<Github>
<add key="Username" value="%GITHUB_PACKAGE_USER_NAME%" />
<add key="ClearTextPassword" value="%GITHUB_PACKAGE_TOKEN%" />
</Github>
</packageSourceCredentials>
</configuration>
GITHUB_PACKAGE_USER_NAME
和GITHUB_PACKAGE_TOKEN
可以是你想要的任何东西。
现在,每个团队成员都应该配置他们的用户环境变量:
GITHUB_PACKAGE_USER_NAME
: 团队成员 github 用户名
GITHUB_PACKAGE_TOKEN
: 团队成员个人访问令牌 (PAT)
通过这些配置,假设团队成员有权访问 OWNER 包存储库,Visual Studio 将能够查询和下载包。
如何在github 操作工作流中恢复 github nuget 包?
使用前面的NuGet.config
配置,您需要更改传递所需环境变量的工作流程,如下所示:
- name: Restore dependencies
env:
GITHUB_PACKAGE_USER_NAME: ${{ github.actor }}
GITHUB_PACKAGE_TOKEN: ${{ secrets.RESTORE_ORGANIZATION_PACKAGES }}
run: dotnet restore ./src
由于您无法通过 PAT,因此您需要配置一个 github 机密(用于存储库或组织)。在上面的示例中,我在存储库级别创建了一个以权限RESTORE_ORGANIZATION_PACKAGES
命名的机密。read:packages