Непрерывная интеграция Visual Studio Team Services: сбой задачи восстановления NuGet

Я использую функцию непрерывной интеграции в Team Services (была Visual Studio Online). Мое определение сборки нацелено на конкретный проект в решении (а не на все решение), которым является веб-сайт ClientUI MVC.

Решение содержит три проекта:

  1. ClientUI
  2. AdminUI
  3. Клиентские службы

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

Определение сборки для проекта ClientUI:

Репозиторий:

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

Установщик Nuget. Я пробовал разные параметры, но не работал. введите описание изображения здесь

Сборка Visual Studio

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

Прежде чем пытаться настроить таргетинг на один проект, мое определение сборки было ориентировано на все решение со следующими параметрами:

  1. Установщик NuGet -> Путь к решению: ** \ *. Sln
  2. Сборка Visual Studio -> Решение: ** \ *. Sln; Аргументы MSBuild: /p:outdir=$(build.artifactstagingdirectory)

Это сработало. Однако теперь он генерирует эту ошибку в задаче восстановления слепка:

2016-04-22T21:07:00.6716725Z Set workingFolder to default: C:\LR\MMS\Services\Mms\TaskAgentProvisioner\Tools\agents\1.98.1\tasks\NuGetInstaller\0.1.25
2016-04-22T21:07:00.8163908Z Executing the powershell script: C:\LR\MMS\Services\Mms\TaskAgentProvisioner\Tools\agents\1.98.1\tasks\NuGetInstaller\0.1.25\NuGetInstaller.ps1


2016-04-22T21:07:01.5283529Z ##[error]Cannot find path 'C:\a\1\s\packages.config' because it does not exist.
2016-04-22T21:07:01.5439897Z C:\LR\MMS\Services\Mms\TaskAgentProvisioner\Tools\agents\1.98.1\agent\worker\tools\NuGet.exe restore "C:\a\1\s\packages.config"  -NonInteractive


2016-04-22T21:07:03.0441507Z MSBuild auto-detection: using msbuild version '14.0' from 'C:\Program Files (x86)\MSBuild\14.0\bin'.


2016-04-22T21:07:03.0597010Z ##[error]Cannot determine the packages folder to restore NuGet packages. Please specify either -PackagesDirectory or -SolutionDirectory.
2016-04-22T21:07:03.0909881Z ##[error]Unexpected exit code 1 returned from tool NuGet.exe


person Hussein Salman    schedule 22.04.2016    source источник
comment
Ну а в папке ClientUI есть файл packages.config? Вы пробовали сопоставить папку пакетов на уровне решения?   -  person jessehouwing    schedule 23.04.2016
comment
да, в папке ClientUI существует файл packages.config. Это то, что я указываю в установщике Nugget. Я пробовал ** \ *. Sln, тоже не сработало.   -  person Hussein Salman    schedule 23.04.2016
comment
Я имел в виду добавление папки пакетов, которая, похоже, находится в том же родителе, что и клиентский интерфейс, в сопоставленные папки в конфигурации вашего репозитория.   -  person jessehouwing    schedule 23.04.2016
comment
Я изменил конфигурацию репозитория и добавил новое сопоставление с ServerPath: '$ / MySite / BerkeleyWeb / packages' и LocalPath: 'packages', а также изменил LocalPath, чтобы первое сопоставление было «ClientUI». Однако задача слепка завершилась неудачно со следующими ошибками: ## [error] Свойство DirectoryName не существует или не было найдено. ## [ошибка] Не удается найти файл решения. ## [ошибка] Средство NuGet.exe возвращает неожиданный код выхода 1   -  person Hussein Salman    schedule 24.04.2016
comment
сопоставление с файлом sln работает для меня   -  person maxisam    schedule 16.04.2018


Ответы (3)


Попробуйте установить для параметра «Тип установки» значение «Установить» для задачи «Установщик Nuget», поскольку вы используете «packages.config» для установки пакетов. введите описание изображения здесь

person Eddie Chen - MSFT    schedule 25.04.2016
comment
Спасибо, @Eddie. После изменения на «Установить» шаг «Установка слепка» выполняется успешно, однако решение для сборки выдает ошибку: Этот проект ссылается на пакеты NuGet, которые отсутствуют на этом компьютере. Используйте NuGet Package Restore, чтобы загрузить их. Для получения дополнительной информации см. go.microsoft.com/fwlink/?LinkID=322105. . Отсутствующий файл: .. \ packages \ Microsoft.Net.Compilers.1.0.0 \ build \ Microsoft.Net.Compilers.props.. Однако в журнале шага установки самородка я обнаружил, что он уже добавлен: Добавлен пакет Microsoft.Net.Compilers.1.0.0 в папку C: \ a \ 1 \ s. - person Hussein Salman; 25.04.2016
comment
@ h.salman Пакет не установлен в папку пакетов. Попробуйте добавить -OutputDirectory .. \ packages в аргументы Nuget. - person Eddie Chen - MSFT; 26.04.2016

Для всех, кому интересно, источник ошибки «Укажите либо -PackagesDirectory, либо -SolutionDirectory» заключается в том, что процесс сборки пытается выполнить команду, подобную этой:

C:\hostedtoolcache\windows\NuGet\4.4.1\x64\nuget.exe restore D:\a\1\s\MyProject\packages.config -PackagesDirectory packages -Verbosity Detailed -NonInteractive 

Приведенные ниже снимки экрана должны помочь, если вы хотите создать проект (а не решение) и ваша папка nuget «packages» находится на уровне решения.

Кроме того, вам может потребоваться указать это как «аргумент MSBuild» в задаче сборки вашего проекта: / p: SolutionDir = "/"

Csproj - ваше решение.

Если ваша папка пакетов находится на уровне решения, вы хотите, чтобы она была в качестве целевого каталога.

person paulyb    schedule 16.04.2018
comment
Возможно, вам стоит уточнить, в чем проблема с показанной вами командой. Кроме того, как именно помогает снимок экрана? Вы должны это описать. - person Artjom B.; 16.04.2018

У меня было то же самое, разобралось, изменив сопоставление - перейдите на вкладку Репозиторий, у меня было сопоставление с другим каталогом, что означает, что установщик nuget не может выполнить.

person tomerhs    schedule 28.04.2016