Как использовать восстановление dotnet в размещенном агенте сборки Visual Studio Team Services с веб-каналом VSTS Nuget

У меня есть библиотека классов .Net Core 1.0, в которой используется пакет Nuget, размещенный в канале Nuget Visual Studio Team Services.

Мы используем Visual Studio Team Services для создания библиотеки классов и имеем определение сборки с шагом сборки, который выполняет dotnet restore в проекте. Команда завершается со следующими ошибками:

2016-06-28T13:07:09.0634265Z ##[warning]File name doesn't indicate a full path to a executable file.
2016-06-28T13:07:09.0644179Z Executing the following command-line. (workingFolder = C:\a\1\s)
2016-06-28T13:07:09.0644179Z dotnet restore
2016-06-28T13:07:09.0654186Z Error message highlight pattern: 
2016-06-28T13:07:09.0654186Z Warning message highlight pattern: 
2016-06-28T13:07:11.6393062Z log  : Restoring packages for C:\a\1\s\src\Company.Extensions\project.json...
2016-06-28T13:07:11.7623059Z info :   GET https://Company.pkgs.visualstudio.com/DefaultCollection/_packaging/FeedName/nuget/v2/FindPackagesById()?id='Company.Model'
2016-06-28T13:07:11.8463064Z info :   GET https://api.nuget.org/v3-flatcontainer/Company.model/index.json
2016-06-28T13:07:12.0162954Z info :   Unauthorized https://Company.pkgs.visualstudio.com/DefaultCollection/_packaging/FeedName/nuget/v2/FindPackagesById()?id='Company.Model' 254ms
2016-06-28T13:07:12.0702952Z log  : Retrying 'FindPackagesByIdAsyncCore' for source 'https://Company.pkgs.visualstudio.com/DefaultCollection/_packaging/FeedName/nuget/v2/FindPackagesById()?id='Company.Model''.
2016-06-28T13:07:12.0712954Z log  : Response status code does not indicate success: 401 (Unauthorized).
2016-06-28T13:07:12.0712954Z info :   GET https://Company.pkgs.visualstudio.com/DefaultCollection/_packaging/FeedName/nuget/v2/FindPackagesById()?id='Company.Model'
2016-06-28T13:07:12.0722952Z info :   NotFound https://api.nuget.org/v3-flatcontainer/Company.model/index.json 224ms
2016-06-28T13:07:12.1426754Z info :   Unauthorized https://Company.pkgs.visualstudio.com/DefaultCollection/_packaging/FeedName/nuget/v2/FindPackagesById()?id='Company.Model' 73ms
2016-06-28T13:07:12.1436737Z log  : Retrying 'FindPackagesByIdAsyncCore' for source 'https://Company.pkgs.visualstudio.com/DefaultCollection/_packaging/FeedName/nuget/v2/FindPackagesById()?id='Company.Model''.
2016-06-28T13:07:12.1436737Z log  : Response status code does not indicate success: 401 (Unauthorized).
2016-06-28T13:07:12.1446974Z info :   GET https://Company.pkgs.visualstudio.com/DefaultCollection/_packaging/FeedName/nuget/v2/FindPackagesById()?id='Company.Model'
2016-06-28T13:07:12.2162787Z info :   Unauthorized https://Company.pkgs.visualstudio.com/DefaultCollection/_packaging/FeedName/nuget/v2/FindPackagesById()?id='Company.Model' 72ms
2016-06-28T13:07:12.2172786Z error: Failed to retrieve information from remote source 'https://Company.pkgs.visualstudio.com/DefaultCollection/_packaging/FeedName/nuget/v2/FindPackagesById()?id='Company.Model''.
2016-06-28T13:07:12.2172786Z error: Response status code does not indicate success: 401 (Unauthorized).
2016-06-28T13:07:12.2364584Z error: Failed to retrieve information from remote source 'https://Company.pkgs.visualstudio.com/DefaultCollection/_packaging/FeedName/nuget/v2/FindPackagesById()?id='Company.Model''.
2016-06-28T13:07:12.2374607Z error:   Response status code does not indicate success: 401 (Unauthorized).

Очевидно, это не удается, потому что FeedName требует, чтобы мы аутентифицировались в нем, поэтому у нас также есть этот файл nuget.config вместе с нашим project.json:

<?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="nuget.org" value="https://www.nuget.org/api/v2/" />
    <add key="FeedName" value="https://Company.pkgs.visualstudio.com/DefaultCollection/_packaging/FeedName/nuget/v2" />
  </packageSources>
  <packageRestore>
    <add key="enabled" value="True" />
    <add key="automatic" value="True" />
  </packageRestore>
  <bindingRedirects>
    <add key="skip" value="False" />
  </bindingRedirects>
  <FeedName>
    <add key="Username" value="username" />
    <add key="ClearTextPassword" value="the_actual_clear_text_password" />
  </FeedName>
</configuration>

Это работает, если мы используем этап сборки Nuget Installer, но с dotnet restore это не так.

Пожалуйста, помогите, это недостающая часть, которая нам нужна, чтобы продолжать использовать Visual Studio Team Services для создания наших проектов.


person TomRay74    schedule 29.06.2016    source источник


Ответы (2)


Подробности можно найти по этой ссылке: .NET Core.

В настоящее время .NET Core не поддерживает зашифрованные учетные данные. Чтобы использовать веб-каналы VSTS NuGet с приложениями .NET Core, вам потребуется указать маркер личного доступа в виде обычного текста.

person Eddie Chen - MSFT    schedule 29.06.2016
comment
Благодарю вас! По вашей ссылке я обнаружил, что мне не хватает тегов <packageSourceCredentials> в моем nuget.config. Ввод их решил мою проблему. - person TomRay74; 29.06.2016

Теперь вы можете использовать этап сборки ядра dotnet для восстановления, сборки, тестирования и выполнения других пользовательских команд dotnet.

введите здесь описание изображения

Ниже приведены все команды, доступные для использования.

введите здесь описание изображения

Выбор команды restore позволит вам выбрать источник пакета nuget, как показано ниже.

введите здесь описание изображения

person Sundeep    schedule 22.10.2018