Как запустить тест dotnet на VSTS с настраиваемым фидом NuGet?

У нас есть проект, зависящий от настраиваемого канала NuGet (также размещенного в VSTS).

Я пытаюсь создать новый этап для создания отчетов о покрытии кода, как в это сообщение в блоге. Моя новая фаза выглядит так:

Снимок экрана нового этапа

И состоит из следующих шагов:

  1. Установщик .NET Core Tool - используйте SDK 2.0.0
  2. dotnet restore с моим настраиваемым фидом, выбранным в раскрывающемся списке «Использовать пакеты из этого VSTS / TFS-фида»
  3. dotnet test с соответствующими аргументами для сбора покрытия кода
  4. Настраиваемый шаг с использованием ReportGenerator
  5. Шаг к публикации результатов

Проблема в том, что dotnet test настаивает на попытке восстановить сами пакеты. Поскольку я не могу найти способ указать ему использовать настраиваемый канал, он не работает при попытке восстановить эти пакеты:

D:\a\1\s\MyProject\MyProject.csproj : error NU1101: Unable to find package My.Package. No packages exist with this id in source(s): Microsoft Visual Studio Offline Packages, nuget.org

Мой основной процесс сборки работает нормально и может восстановить пакет из настраиваемого канала. Разница в том, что используются версии команд Visual Studio (т.е. не dotnet):

Снимок экрана основного процесса сборки

Как правильно с этим справиться?

Мне нужно найти способ сообщить dotnet test о моем настраиваемом фиде?

Или (учитывая, что я запускаю restore непосредственно перед этим) мне нужно убедить его вообще пропустить восстановление?


person Tom Wright    schedule 15.08.2018    source источник
comment
Что, если вы укажете с помощью 2.1.4 для задачи установщика .NET Core Tool (или что, если вы удалите задачу установщика .NET Core Tool, поскольку агент Hosted VS2017 установил ядро ​​.net 2.1.4) ?   -  person Marina Liu    schedule 15.08.2018
comment
@ MarinaLiu-MSFT Спасибо за предложение, но я только что попробовал и, боюсь, поведение такое же. Я пробовал установить его явно, и я попытался полностью отключить задачу установщика.   -  person Tom Wright    schedule 16.08.2018


Ответы (3)


Если у кого-то еще есть эта проблема, я с сожалением сообщаю, что наш путь к решению заключался в объединении двух репозиториев, что фактически отрицало необходимость использования частного канала Nuget.

У нас есть Немного туда-сюда с представителем от MS, но не дошел до сути.

person Tom Wright    schedule 05.09.2018

Как правильно с этим справиться?

На шаге dotnet restore убедитесь, что в поле Path to project(s) указаны все соответствующие проекты. (Легко забыть о проекте, и это приведет к тому поведению, которое вы испытываете.) Например, вы можете указать значение **/*.csproj. Если вы сделаете это правильно, другие шаги, такие как dotnet test, не должны даже пытаться восстанавливать пакеты, поскольку они уже были восстановлены.

Нужно ли мне найти способ сообщить dotnet test о моем настраиваемом фиде?

Нет (при условии, что на шаге dotnet restore пакеты уже были восстановлены)

Или (учитывая, что я запускаю restore непосредственно перед этим) мне нужно убедить его вообще пропустить восстановление?

Нет. Восстановление будет автоматически пропущено (при условии, что на шаге dotnet restore пакеты уже были восстановлены).

person lightbricko    schedule 24.01.2019
comment
Спасибо за ответ @lightbricko. Тогда мы определенно проверили, все ли соответствующие проекты включены. После разговоров с MS я почти уверен, что это был пробел в поддержке .NET Core, который, возможно, был устранен за прошедшие месяцы. - person Tom Wright; 01.02.2019

У меня была такая же ошибка на собственном агенте сборки. Как только я изменил звездный синтаксис (получить последнюю версию) в файле проекта на фиксированную версию, проблема исчезла. Мне немного грустно, что я не могу использовать синтаксис версии.

person Mathias F    schedule 15.12.2020