[英]How to use github nuget packages on Visual Studio 2019
我尝试学习 Github 动作和包。 因此,我创建了一个示例 nuget package 并成功创建。 但是我无法使用它。
我按照这一步;
在那之后,Visual Studio 不会向我询问此地址的任何凭据。
如果没有凭据,我会期望出错。 我明白了。
[github] 无法从源“ https://nuget.pkg.github.com/[OrganizationName]/query?q=&skip=0&take=26&prerelease=false&semVerLevel=2.0.0 ”检索元数据。 响应状态码不表示成功:401(未授权)。
然后,我决定使用一些凭证,如github 文档中所述。
但是我仍然收到未经授权的错误。 而且,当我单击错误链接时,会收到一条这样的消息:
{"errors":[{"code":"您的令牌未被授予执行此查询所需的范围。'id' 字段需要以下范围之一","message":" ['read:packages' ],但您的令牌仅被授予:[''] 范围。请在以下位置修改您的令牌范围: https://github.com/settings/tokens 。"}]}
那么,如何添加和使用我的私有 nuget 包?
这不是一件容易的事,但这是解决方案(经过 2 天的努力)
首先在Github中生成PAT(Personal Access Token)
按照以下步骤生成 PAT
read:packages 选项对 select 非常重要
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>
您必须更换:
您必须重新启动 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_NAME
和GITHUB_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 包添加新源时,我第一次收到用户和密码提示
我错误地输入了我的 github 密码作为密码。 相反,您应该在 github 设置下创建一个令牌,如下所示,并输入令牌本身而不是您的帐户密码。
就我而言,我在创建令牌时选择了以下选项
不幸的是,VS 19 没有再次提示输入凭据并继续显示错误消息:
[github] 无法从源检索元数据...。响应状态代码不表示成功:401(未授权)。
要在 Windows 上更改此参数,请打开控制面板\用户帐户\凭据管理器,如下所示:
单击编辑,并将您刚刚在 github 上创建的访问令牌粘贴为密码。 向下滚动凭据列表。 就我而言,我还需要更改密码。
如何在 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
文件。
建议
请将您的文件内容添加到C:\Users\xxx(current user)\AppData\Roaming\NuGet\NuGet.Config
中。
重新启动 VS 实例或重新启动 PC 以启用这个新的nuget.config
文件。 它就是这样设计的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.