Восстановление пакета NuGet в конвейере сборки Azure DevOps

Это продолжение вопроса, который у меня был вчера: Восстановление пакета NuGet в сборках и Visual Studio

С тех пор я удалил папку решения ".nuget" из моего решения VS2013, но задача "Visual Studio build" в моем конвейере сборки теперь не работает с ошибкой для каждого проекта:

[ошибка] xxxxx.csproj (214,5): Ошибка: этот проект ссылается на пакеты NuGet, которые отсутствуют на этом компьютере. Включите восстановление пакета NuGet, чтобы загрузить их. Для получения дополнительной информации см. http://go.microsoft.com/fwlink/?LinkID=322105. Отсутствует файл c: \ Temp \ VSTS Agent_work \ 10 \ s \ xxxxx \ .nuget \ NuGet.targets.

Я попытался проверить параметр «Восстановить пакеты NuGet» в задаче сборки VS, но это не имеет значения. Флажок означает, что эта опция устарела, и чтобы использовать задачу «Установщик инструмента Nuget» - я тоже пробовал это, но это все равно не помогло.

Я даже добавил задачу «Nuget (command = restore)» в свой конвейер сборки. Его вывод показывает, что он восстановил пакеты Nuget в папке \ packages решения, но опять же без радости.

Я проверил относительные пути пакетов в файлах .csproj, и они правильно указывают на папки пакетов, восстановленные с помощью вышеуказанной задачи «Восстановление Nuget».

Я что-то упускаю или это единственное исправление, позволяющее вернуть папку решения ".nuget"?


person Andrew Stephens    schedule 06.09.2019    source источник


Ответы (1)


Нашел ответ: мне нужно было удалить остатки "старого способа" восстановления пакетов из каждого из моих файлов .csproj, а именно:

<Import Project="$(SolutionDir)\.nuget\NuGet.targets" Condition="Exists('$(SolutionDir)\.nuget\NuGet.targets')" />
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
  <PropertyGroup>
    <ErrorText>This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them.  For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
  </PropertyGroup>
  <Error Condition="!Exists('$(SolutionDir)\.nuget\NuGet.targets')" Text="$([System.String]::Format('$(ErrorText)', '$(SolutionDir)\.nuget\NuGet.targets'))" />
</Target>

Согласно этому ответу SO: https://stackoverflow.com/a/23852183/981831

person Andrew Stephens    schedule 06.09.2019