我正在尝试通过NuGet包管理器在Visual Studio 2019中提供一个.NET Framework v4.5.2包,并从Github的私有NuGet包注册系统获取。
我使用的重要工具有:
- .NET Framework 4.5.2 - Github Actions - Github - Github Package Registry (GPR) - Visual Studio 2019/NuGet包管理器
我的目标是什么?
整个生命周期看起来像这样:
当我尝试在浏览器中运行相同的查询(
我使用的重要工具有:
- .NET Framework 4.5.2 - Github Actions - Github - Github Package Registry (GPR) - Visual Studio 2019/NuGet包管理器
我的目标是什么?
整个生命周期看起来像这样:
- 我的项目仓库有一个CI任务 (Github 品牌) 用于
msbuild
& 发布nupkg
。它将所有内容包装起来并将其部署到 https://nuget.pkg.github.com/< my-private-org >。 - 在 Visual Studio 2019 中,用户可以打开给定项目,并参考 https://nuget.pkg.github.com/< my-private-org > 作为自定义 NuGet feed,并将 "My Project" 声明为依赖项。
什么有效,什么无效?
GitHub 成功发布了我的软件包 - 当我访问 https://github.com/my-private-organization?tab=packages 时,我可以看到它。
然而,我不能使 Visual Studio 2019 支持我的私有 NuGet 注册表。尝试访问时,我会收到以下错误:
[Private] Failed to retrieve metadata from source 'https://nuget.pkg.github.com/<my-private-organization>/query?q=&skip=0&take=26&prerelease=true&supportedFramework=.NETFramework,Version=v4.7&semVerLevel=2.0.0'.
Response status code does not indicate success: 401 (Unauthorized).
当我尝试在浏览器中运行相同的查询(
GET https://nuget.pkg.github.com/<my-private-organization>/query?q=&skip=0&take=26&prerelease=true&supportedFramework=.NETFramework,Version=v4.7&semVerLevel=2.0.0'
)时,会弹出一个模态框要求输入GitHub凭据,但是在输入后,我遇到了相同的401错误,但是有不同的错误消息。{
"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:package
权限的GITHUB_TOKEN
——我在我的CI作业中使用它来生成包。
我有怀疑...
我需要将我的read:package
凭证的GITHUB_TOKEN
作为额外的认证凭据传递,但我不知道如何在nuget.config
中配置。这就导致了...
我的配置是什么?
我读到需要使用一些额外的凭证信息对我的%APPDATA%/NuGet/nuget.config
进行参数化,这些信息来自于这里:https://learn.microsoft.com/en-us/nuget/reference/nuget-config-file#packagesourcecredentials。我可以确认我正在更新正确的nuget.config
文件——我已经能够使用我正在修改的文件更改Visual Studio中的软件包流名称。现在它看起来有点像:
<!-- file: nuget.config -->
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<packageSources>
<add key="nuget.org" value="https://api.nuget.org/v3/index.json" protocolVersion="3" />
<add key="Private" value="https://nuget.pkg.github.com/###############/index.json" />
<add key="Microsoft Visual Studio Offline Packages" value="C:\Program Files (x86)\Microsoft SDKs\NuGetPackages\" />
</packageSources>
<packageSourceCredentials>
<Private>
<add key="Username" value="###############" />
<add key="ClearTextPassword" value="*******************" />
<!-- Could I perhaps need to introduce my Github Access Token here? -->
</Private>
</packageSourceCredentials>
</configuration>
packageSourceCredentials
中指定的用户名和密码与我在浏览器中手动进行的 GET
查询中使用的相同(该查询因 401 而失败)。
欢迎所有想法,甚至是“没人做A”。