Я пытаюсь создать конвейер в Azure DevOps и получаю ошибки компиляции, вызванные отсутствующей ссылкой:
[предупреждение] C: \ Program Files (x86) \ Microsoft Visual
Studio \ 2017 \ Enterprise \ MSBuild \ 15.0 \ Bin \ Microsoft.Common.CurrentVersion.targets (2110,5):
Предупреждение MSB3245: не удалось разрешить эту ссылку. Не удалось найти
сборка "Азбука". Убедитесь, что сборка существует на диске. Если
эта ссылка требуется вашим кодом, вы можете получить компиляцию
ошибки.
У меня есть решение VS2017 с 2 проектами.
ABC, которая является фактическим применением
ABC.UnitTests, где я добавил несколько юнит-тестов (я использую MSTest)
Когда я собираю решение локально, я могу выполнить успешную сборку, выполнив следующие шаги:
Сборка проекта ABC => ABC.dll генерируется
Добавить ссылку в proj ABC.UnitTests на ABC.dll
Построить все решение => Построить успешно
Файл .cs в ABC.UnitTests ссылается на приложение таким образом и генерирует предупреждение выше:
using ABC;
Если я делаю чистую сборку, где ABC.dll удаляется, а затем я делаю сборку всего решения, я получаю то же предупреждение MSB3245. Таким образом, проблема воспроизводима локально, если dll не существует.
Затем, когда я загружаю решение в DevOps Azure, я делаю следующие шаги.
- Загрузите решение с локального VS2017, и в Azure будет создан проект
- Создайте проект в Azure DevOps => обнаружена ссылка на проблему
У меня есть файл конфигурации YAML с именем azure-pipelines.yml, который ссылается на размещенный агент 2017.
pool: vmImage: 'vs2017-win2016'
Переменный поток:
- Загрузите решение с локального VS2017, и в Azure будет создан проект
- Закомментируйте ссылку на проект ABC.UnitTests из файла sln
- Создать конвейер => Построить успешно.