Найти в Дзене

.NET Core 8, Azure DevOps, и System.InvalidOperationException : Solution root could not be located using application root

И вот бывает же такое. Пилим тесты с использованием WebApplicationFactory... Который уже проект, все примерно одинаково, все идет нормально... И тут, внезапно, ровно один проект начинает выдавать ошибку - но не просто так, а только при исполнении из pipeline Azure DevOps. Ошибка - на старте factory, System.InvalidOperationException : Solution root could not be located using application root. Ошибка, которую давным давно, еще с 6 .NET Core должны были, вроде как, побороть. А тут у нас .NET Core 8, причем соседний похожий проект в этом же solution исполняется вообще без проблем. Да, я прочитал документацию. И по ASPNETCORE_TEST_CONTENTROOT_APPNAME, и по WebApplicationFactoryContentRootAttribute. И все попробовал. И нифига не работает. Просто из VS2022 - работает. Запуск из командной строки - ну, все варианты не проверял, но так-то тоже работает. Из Azure DevOps - фиг. И используемые пакеты (и их версии) тоже проверил. Состав несколько различается, проекты-то все же разные, тестируемый к

И вот бывает же такое. Пилим тесты с использованием WebApplicationFactory... Который уже проект, все примерно одинаково, все идет нормально... И тут, внезапно, ровно один проект начинает выдавать ошибку - но не просто так, а только при исполнении из pipeline Azure DevOps.

Ошибка - на старте factory, System.InvalidOperationException : Solution root could not be located using application root. Ошибка, которую давным давно, еще с 6 .NET Core должны были, вроде как, побороть. А тут у нас .NET Core 8, причем соседний похожий проект в этом же solution исполняется вообще без проблем.

Да, я прочитал документацию. И по ASPNETCORE_TEST_CONTENTROOT_APPNAME, и по WebApplicationFactoryContentRootAttribute. И все попробовал. И нифига не работает. Просто из VS2022 - работает. Запуск из командной строки - ну, все варианты не проверял, но так-то тоже работает. Из Azure DevOps - фиг.

И используемые пакеты (и их версии) тоже проверил. Состав несколько различается, проекты-то все же разные, тестируемый код отличается - где-то есть EF Core, к примеру, где-то нет. Но по ключевым пакетам все идентично.

В общем, с хрен знает какой попытки нашел обходной путь. Вместо dotnet publish, с передачей результата сборки в $(Build.ArtifactStagingDirectory), делаем просто build. Далее, запускаем через PowerShell выполняемые файлы с тестами прямо там, где они собрались, то есть в bin\Debug\... Результаты по прежнему собираем в $(Build.ArtifactStagingDirectory).

Ура, у меня опять все интеграционные тесты зеленые!