如何在 Visual Studio 2019 上使用 github nuget 包
How to use github nuget packages on Visual Studio 2019
我尝试学习 Github 动作和包。因此,我创建了一个示例 nuget 包并成功创建。但是我无法使用它。
我按照这一步;
- 选项 > Nuget 包管理器 > 包源
点击添加按钮写入组织名称并添加包源地址,如下所示:
在那之后 Visual Studio 没有问我这个地址的任何凭据。
如果没有凭据,我会报错。我明白了。
[github] 无法从源“https://nuget.pkg.github.com/[OrganizationName]/query?q=&skip=0&take=26&prerelease=false&semVerLevel=2.0.0”检索元数据。
响应状态码不表示成功:401(Unauthorized).
然后,我决定像 github documentation.
中解释的那样获取一些证书
我的 nuget.config 文件:
但是我仍然收到未经授权的错误。而且当我单击错误 link 时收到这样的消息:
{"errors":[{"code":"Your token has not been granted the required
scopes to execute this query. The 'id' field requires one of the
following scopes","message":" ['read:packages'], but your token has
only been granted the: [''] scopes. Please modify your token's scopes
at: https://github.com/settings/tokens."}]}
但我已经有了一个带有 read/write 包凭据的令牌。
- 一切都失败了,我尝试另一种方式。我将凭据信息添加到 Windows 凭据管理器。一切还是一样。
那么,如何添加和使用我的私有 nuget 包?
How to use github nuget packages on Visual Studio 2019
首先,请确保您在 nuget.config
文件中的凭据信息正确无误。
我发现您的文档建议您应该将新的 nuget.config
文件添加到您的解决方案中。这个nuget.config
文件是一个本地动作文件,它会作用于当前子目录下的所有项目。可以参考this document。
在这种情况下,您应该重新启动 VS 实例以启用这个新的 nuget.config
文件。
--------全局nuget.config--------
但是,从你的描述和第一张图片来看,你使用了全局nuget.config
文件。 UI 的信息存储在全局 nuget.config
文件下。
如果你想为你PC上的所有项目配置这个gihub包源,你应该在全局nuget.config
文件中配置它。
并且您提供的第一张图片表示您在全局文件中使用(C:\Users\xxx(current user)\AppData\Roaming\NuGet\NuGet.Config
)。
此功能还需要重启VS才能启用新的nuget.config
文件。
建议
请将您的文件内容添加到C:\Users\xxx(current user)\AppData\Roaming\NuGet\NuGet.Config
。
重新启动 VS 实例或重新启动 PC 以启用这个新的 nuget.config
文件。就是这么设计的。
这不是一件容易的事,但这是解决方案(经过 2 天的努力)
首先在Github中生成PAT(Personal Access Token)
Follow these steps to generate a PAT
对 select 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 给你安装包的语句
现在您已准备好获取包裹。
更新
How to configure github nuget packages for teams?
使用环境变量配置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)
使用这些配置,Visual Studio 将能够查询和下载包,假设 团队成员 可以访问OWNER 软件包存储库。
How to restore github nuget packages in github actions workflows?
配置之前的 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 秘密(或者 repository or the organization)。在上面的示例中,我在存储库级别创建了一个名为 RESTORE_ORGANIZATION_PACKAGES
且具有 read:packages
权限的秘密。
我今天刚用 VS 19 遇到这个问题。
如下所示为 Nuget 包添加新源时,第一次提示我输入用户名和密码
Add nuget package source
我输入 github 密码作为密码时犯了错误。相反,您应该在 github 设置下创建一个令牌,如下所示,并输入令牌本身而不是您帐户的密码。
Generate token
就我而言,我在创建令牌时选择了以下选项
Token options
不幸的是,VS 19 没有再次提示输入凭据并一直显示错误消息:
[github]无法从源检索元数据...。响应状态代码不表示成功:401(未授权)。
要在 Windows 上更改此参数,请打开控制 Panel\User Accounts\Credential 管理器,如下所示:
Web credentials
单击“编辑”,然后粘贴您刚刚在 github 上创建的 访问令牌 作为密码。向下滚动凭据列表。就我而言,我还需要更改密码。
Second web credentials
我尝试学习 Github 动作和包。因此,我创建了一个示例 nuget 包并成功创建。但是我无法使用它。
我按照这一步;
- 选项 > Nuget 包管理器 > 包源
点击添加按钮写入组织名称并添加包源地址,如下所示:
在那之后 Visual Studio 没有问我这个地址的任何凭据。
如果没有凭据,我会报错。我明白了。
[github] 无法从源“https://nuget.pkg.github.com/[OrganizationName]/query?q=&skip=0&take=26&prerelease=false&semVerLevel=2.0.0”检索元数据。 响应状态码不表示成功:401(Unauthorized).
然后,我决定像 github documentation.
中解释的那样获取一些证书
我的 nuget.config 文件:
但是我仍然收到未经授权的错误。而且当我单击错误 link 时收到这样的消息:
{"errors":[{"code":"Your token has not been granted the required scopes to execute this query. The 'id' field requires one of the following scopes","message":" ['read:packages'], but your token has only been granted the: [''] scopes. Please modify your token's scopes at: https://github.com/settings/tokens."}]}
但我已经有了一个带有 read/write 包凭据的令牌。
- 一切都失败了,我尝试另一种方式。我将凭据信息添加到 Windows 凭据管理器。一切还是一样。
那么,如何添加和使用我的私有 nuget 包?
How to use github nuget packages on Visual Studio 2019
首先,请确保您在 nuget.config
文件中的凭据信息正确无误。
我发现您的文档建议您应该将新的 nuget.config
文件添加到您的解决方案中。这个nuget.config
文件是一个本地动作文件,它会作用于当前子目录下的所有项目。可以参考this document。
在这种情况下,您应该重新启动 VS 实例以启用这个新的 nuget.config
文件。
--------全局nuget.config--------
但是,从你的描述和第一张图片来看,你使用了全局nuget.config
文件。 UI 的信息存储在全局 nuget.config
文件下。
如果你想为你PC上的所有项目配置这个gihub包源,你应该在全局nuget.config
文件中配置它。
并且您提供的第一张图片表示您在全局文件中使用(C:\Users\xxx(current user)\AppData\Roaming\NuGet\NuGet.Config
)。
此功能还需要重启VS才能启用新的nuget.config
文件。
建议
请将您的文件内容添加到
C:\Users\xxx(current user)\AppData\Roaming\NuGet\NuGet.Config
。重新启动 VS 实例或重新启动 PC 以启用这个新的
nuget.config
文件。就是这么设计的。
这不是一件容易的事,但这是解决方案(经过 2 天的努力)
首先在Github中生成PAT(Personal Access Token)
Follow these steps to generate a PAT
对 select 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 为拥有包含您的项目的存储库的用户或组织帐户的名称。
- USERNAME 使用您在 GitHub 上的用户帐户名称。
您必须重新启动 Visual Studio 甚至重新启动 PC 这很重要
之后打开终端并复制并粘贴(可能有一些修改)Github 给你安装包的语句
现在您已准备好获取包裹。
更新
How to configure github nuget packages for teams?
使用环境变量配置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)
使用这些配置,Visual Studio 将能够查询和下载包,假设 团队成员 可以访问OWNER 软件包存储库。
How to restore github nuget packages in github actions workflows?
配置之前的 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 秘密(或者 repository or the organization)。在上面的示例中,我在存储库级别创建了一个名为 RESTORE_ORGANIZATION_PACKAGES
且具有 read:packages
权限的秘密。
我今天刚用 VS 19 遇到这个问题。
如下所示为 Nuget 包添加新源时,第一次提示我输入用户名和密码
Add nuget package source
我输入 github 密码作为密码时犯了错误。相反,您应该在 github 设置下创建一个令牌,如下所示,并输入令牌本身而不是您帐户的密码。
Generate token
就我而言,我在创建令牌时选择了以下选项
Token options
不幸的是,VS 19 没有再次提示输入凭据并一直显示错误消息:
[github]无法从源检索元数据...。响应状态代码不表示成功:401(未授权)。
要在 Windows 上更改此参数,请打开控制 Panel\User Accounts\Credential 管理器,如下所示:
Web credentials
单击“编辑”,然后粘贴您刚刚在 github 上创建的 访问令牌 作为密码。向下滚动凭据列表。就我而言,我还需要更改密码。
Second web credentials