Файл ресурсов project.assets.json не найден при запуске сборки в Devure для Azure. - PullRequest
0 голосов
/ 29 ноября 2018

У меня есть конвейер сборки, настроенный для решения Service Fabric в DevOps Azure, например:

Build tasks

Все было хорошо, пока несколько дней назадсборка начала сбой на конкретном агенте сборки (частном) со следующей ошибкой (для нескольких проектов):

C: \ Program Files \ dotnet \ sdk \ 2.1.200 \ Sdks \ Microsoft.NET.Sdk \ build \ Microsoft.PackageDependencyResolution.targets (327,5): Ошибка: файл ресурсов 'F: \ Agent03 \ w \ 84 \ s \ src \ MyProject.Sam.Tiles.Domain \ obj \ project.assets.JSON не найден.Запустите восстановление пакета NuGet, чтобы сгенерировать этот файл.

Неудачная задача - Build solution $(PathToSolution).

Странно то, что сборка не выполняется при запуске на некоторыхагенты, но с другими сборка в порядке .

Некоторые детали:

  • Use NuGet 4.x Задание началось с использования NuGet v4.9.1 совсем недавно, я думаю.Я безуспешно пытался использовать v4.8.1;
  • В большинстве проектов используется формат PackageReference, но в проекте .sfproj используется файл packages.config
  • Я пытался использовать dotnet restore задача, но при попытке восстановить пакеты для проекта .sfproj возникла ошибка:

    `Ошибка: не удалось найти '.... \ packages \ Microsoft.VisualStudio.Azure.Fabric.Файл MSBuild.1.6.7 \ build \ Microsoft.VisualStudio.Azure.Fabric.Application.props.Пожалуйста, восстановите пакет Nuget Microsoft.VisualStudio.Azure.Fabric.MSBuild

Есть идеи о том, что может вызывать эту проблему?

Ответы [ 3 ]

0 голосов
/ 20 февраля 2019

Моя проблема оказалась решением, которое не включало в себя все необходимые проекты.

У меня есть мастер-файл решения, который включает в себя все мои проекты и ряд меньшихфайлы решения только с некоторыми из проектов.Основное решение прекрасно скомпоновано в Azure DevOps, но частичное решение не удалось.

Я понял, что отсутствующий файл project.assets.json принадлежал проекту, который необходимо было включить в это ошибочное решение.

0 голосов
/ 27 февраля 2019

Комментарий Тревора 20.02 дал мне подсказку.Скорее всего, у вас нет полного набора проектов, на которые ссылается решение.(ProjectReferences может перейти к другим проектам, которых нет в решении).

Вот почему этот сумасшедший обходной путь (запуск задач восстановления dotnet.exe и nuget.exe) сработал:

восстановление dotnetпо умолчанию будет проходить ссылки на проекты, чтобы обеспечить их восстановление.Параметр --no-dependencies может отключить это.

восстановление nuget.exe имеет противоположное значение по умолчанию, потому что мы не хотели ломать старых пользователей.-recursive может включить это.

Правильное решение состоит в том, чтобы ваше решение содержало все проекты.

-Rob Relyea NuGet Client Team, инженер-менеджер

0 голосов
/ 07 декабря 2018

В некоторых проектах используется формат PackageReference, но в проекте .sfproj используется файл packages.config.

Я до сих пор не понимаю, почему сборка не удалась, но я не смог найтиОбходной путь.Учитывая, что PackageReference еще не поддерживается в проектах Service Fabric, мой обходной путь должен был использовать обе задачи восстановления следующим образом:

Build tasks

...