Я пытаюсь сделать доступным пакет .NET Framework v4.5.2 в Visual Studio 2019 через диспетчер пакетов NuGet, полученный из частной системы реестра пакетов NuGet Github.
Важные вещи, которые я использую:
- .NET Framework 4.5.2
- Действия Github
- Github
- Реестр пакетов Github (GPR)
- Visual Studio 2019 / Диспетчер пакетов NuGet
Какова моя цель?
Весь жизненный цикл выглядит примерно так:
- В репозитории моего проекта есть задание CI (бренд Github) для
msbuild
и публикацииnupkg
. Он все упаковывает и развертывает на https://nuget.pkg.github.com/ ‹ моя частная организация ›. - В Visual Studio 2019 при открытии данного проекта пользователь должен иметь возможность ссылаться на https://nuget.pkg.github.com/ ‹my-private-org› как настраиваемый канал NuGet и объявить Мой проект как зависимость.
Что работает, а что нет?
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."
}
]
}
У меня определенно есть GITHUB_TOKEN
с read:package
завивками - я использовал его для генерации пакета в первую очередь в моей работе CI.
Я подозреваю, что ...
Мне нужно передать свои read:package
учетные данные GITHUB_TOKEN
в качестве дополнительных учетных данных для авторизации, но я не знаю, могу ли / как настроить это в nuget.config
. Что приводит нас к ...
Какая у меня конфигурация?
Я прочитал, что мне нужно параметризовать свой %APPDATA%/NuGet/nuget.config
с помощью дополнительной информации об учетных данных, которую я получил отсюда: https://docs.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).
Приветствуются все мысли, даже никто не делает А.