如何在 Visual Studio 2019 上使用 github nuget 包

is_*_*_oz 8 nuget nuget-package visual-studio-2019 github-package-registry

我尝试学习 Github 操作和包。所以,我创建了一个示例 nuget 包并成功创建。但是我无法使用它。

我按照这一步;

  1. 选项 > Nuget 包管理器 > 包源
  2. 单击添加按钮写入组织名称并添加包源地址,如下所示: 在此处输入图片说明

  3. 之后,Visual Studio 不会向我询问此地址的任何凭据。

  4. 如果没有凭据,我会期望出错。我明白了。

    [github] 无法从源“ https://nuget.pkg.github.com/[OrganizationName]/query?q=&skip=0&take=26&prerelease=false&semVerLevel=2.0.0 ”检索元数据。响应状态代码不表示成功:401(未授权)。

  5. 然后,我决定使用一些凭据,如github 文档中所述

  6. 我的 nuget.config 文件: 在此处输入图片说明

  7. 但是我仍然收到未经授权的错误。而且当我单击错误链接时,会收到这样的消息:

{"errors":[{"code":"您的令牌尚未获得执行此查询所需的范围。'id' 字段需要以下范围之一","message":" ['read:packages' ],但您的令牌仅被授予:[''] 范围。请在以下位置修改您的令牌的范围:https : //github.com/settings/tokens。"}]}

但我已经有一个带有读/写包凭证的令牌。 在此处输入图片说明

  1. 所有这些都失败了,我尝试另一种方式。我将凭据信息添加到 Windows 凭据管理器。一切还是一样。

那么,我如何添加和使用我的私有 nuget 包?

Hak*_*tık 14

这不是一件容易的事,但这是解决方案(经过两天的努力)

  1. 首先在 Github 中生成 PAT(个人访问令牌)
    按照以下步骤生成 PAT
    选择 read:packages 选项非常重要 在此输入图像描述
    Github 只会向您显示 PAT 一次,因此请务必将其复制到保存位置,否则,您必须重新生成它

  2. 现在手里有了 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>
    
    Run Code Online (Sandbox Code Playgroud)
  3. 您必须更换:

    • USERNAME 为您在 GitHub 上的用户帐户名称。
    • TOKEN 与您的个人访问令牌(您在步骤 1 中生成的令牌)
    • OWNER 是拥有包含您的项目的存储库的用户或组织帐户的名称。
  4. 您必须重新启动 Visual Studio 甚至重新启动 PC这很重要

之后打开终端并复制并粘贴(可能进行一些修改)Github 为您提供的安装包的语句

在此输入图像描述

现在您已准备好获取软件包了


更新

如何为团队配置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>
Run Code Online (Sandbox Code Playgroud)

和可以是您想要的任何内容GITHUB_PACKAGE_USER_NAMEGITHUB_PACKAGE_TOKEN

现在,每个团队成员应该配置他们的用户环境变量:

  • GITHUB_PACKAGE_USER_NAME: 团队成员github用户名
  • GITHUB_PACKAGE_TOKEN:团队成员个人访问令牌(PAT)

通过这些配置,假设团队成员有权访问 OWNER 包存储库,Visual Studio 将能够查询和下载包。

如何在github actions工作流程中恢复 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
Run Code Online (Sandbox Code Playgroud)

由于您无法通过 PAT,因此您需要配置 github 密钥(无论是用于存储库还是组织)。在上面的示例中,我创建了一个名为存储库级别权限RESTORE_ORGANIZATION_PACKAGES的密钥。read:packages


小智 13

我今天刚用 VS 19 遇到了这个问题。

当为 Nuget 包添加新源时(如下所示),我第一次收到用户和密码提示

添加nuget包源

我错误地输入了 github 密码作为密码。相反,您应该在 github 设置下创建一个令牌,如下所示,并输入令牌本身而不是您帐户的密码。

生成代币

就我而言,我在创建令牌时选择了以下选项

代币选项

不幸的是,VS 19 没有再次提示输入凭据,并一直显示错误消息:

[github] 无法从源检索元数据...。响应状态代码不表示成功:401(未经授权)。

要在 Windows 上更改此参数,请打开控制面板\用户帐户\凭据管理器,如下所示:

网络凭证

单击“编辑”,然后粘贴您刚刚在 github 上创建的访问令牌作为密码。向下滚动凭据列表。就我而言,我还需要其次更改密码。

第二个网络凭据


Mr *_*ian 11

如何在 Visual Studio 2019 上使用 github nuget 包

首先,确保nuget.config文件中的凭据信息正确。

我发现你的文档建议你应该将一个新nuget.config文件放入你的解决方案中。该nuget.config文件是本地操作文件,它将作用于当前子目录及当前级别以下的任何项目。你可以参考这个文档

这样,您应该重新启动 VS Instance 才能启用这个新nuget.config文件。

-------全局nuget.config--------

但是,从您的描述和第一张图片来看,您使用了全局nuget.config文件。UI的信息存储在全局nuget.config文件下。

如果你想为你电脑上的所有项目配置这个gihub包源,你应该在全局nuget.config文件中配置它。

您提供的第一张图片表明您在全局文件(C:\Users\xxx(current user)\AppData\Roaming\NuGet\NuGet.Config)中使用。

该功能还需要重启VS才能启用新nuget.config文件。

建议

  1. 请将您的文件内容添加到C:\Users\xxx(current user)\AppData\Roaming\NuGet\NuGet.Config.

  2. 重新启动 VS 实例或重新启动 PC 以启用此新nuget.config文件。它就是这样设计的。