Как настроить частный реестр пакетов Nuget с помощью Visual Studio 2019?

Я пытаюсь сделать доступным пакет .NET Framework v4.5.2 в Visual Studio 2019 через диспетчер пакетов NuGet, полученный из частной системы реестра пакетов NuGet Github.

Важные вещи, которые я использую:

  • .NET Framework 4.5.2
  • Действия Github
  • Github
  • Реестр пакетов Github (GPR)
  • Visual Studio 2019 / Диспетчер пакетов NuGet

Какова моя цель?

Весь жизненный цикл выглядит примерно так:

  1. В репозитории моего проекта есть задание CI (бренд Github) для msbuild и публикации nupkg. Он все упаковывает и развертывает на https://nuget.pkg.github.com/ ‹ моя частная организация ›.
  2. В 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).

Приветствуются все мысли, даже никто не делает А.


person Ian Ray    schedule 11.11.2020    source источник


Ответы (1)


Чтобы использовать nuget из фида пакетов Github, вы должны использовать личный токен доступа GitHub, а не свое имя пользователя и пароль Github.

Прочтите официальный документ на GitHub: https://docs.github.com/en/free-pro-team@latest/packages/using-github-packages-with-your-projects-ecosystem/configuring-dotnet-cli-for-use-with-github-packages#authentication-with-a-personal-access-token

Используйте это руководство для создания токена личного доступа: https://docs.github.com/en/free-pro-team@latest/github/authenticating-to-github/creating-a-personal-access-токен

person Eriawan Kusumawardhono    schedule 11.11.2020
comment
Эриаван, с уважением, не могли бы вы объяснить разницу между токеном личного доступа и токеном github? Спасибо за ответ - person Ian Ray; 11.11.2020
comment
Моя ошибка, я должен уточнить, не следует использовать идентификатор пользователя + пароль. Я обновлю свой ответ. - person Eriawan Kusumawardhono; 11.11.2020
comment
Невероятный. Это действительно устранило проблему @Erianwan. Еще раз спасибо! Могу поклясться, что уже пробовал это. ¯_ (ツ) _ / ¯ - person Ian Ray; 11.11.2020