繁体   English   中英

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

[英]How to use github nuget packages on Visual Studio 2019

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

我按照这一步;

  1. 选项 > Nuget Package 经理 > Package 来源
  2. 单击添加按钮写入组织名称并添加 package 源地址,如下所示: 在此处输入图像描述

  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 。"}]}

但我已经有一个带有读/写 package 凭证的令牌。 在此处输入图像描述

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

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

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

  1. 首先在Github中生成PAT(Personal Access Token)
    按照以下步骤生成 PAT
    read:packages 选项对 select 非常重要在此处输入图像描述
    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>
  3. 您必须更换:

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

之后打开终端并复制并粘贴(可能有一些修改)Github 给你安装 package 的声明

在此处输入图像描述

现在您已准备好获取 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_NAMEGITHUB_PACKAGE_TOKEN可以是任何你想要的。

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

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

通过这些配置,假设团队成员可以访问 OWNER package 存储库,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的 secret,它具有read:packages权限。

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

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

添加 nuget package 来源

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

生成令牌

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

令牌选项

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

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

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

Web 凭据

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

第二个 web 凭据

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

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

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

这样,您应该重新启动 VS 实例以启用这个新的nuget.config文件。

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

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

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

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

这个 function 也需要重启 VS 才能启用新的nuget.config文件。

建议

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM