У меня есть решение, в котором есть .netcore2.1 webapi и приложение xamarin.iOS.
Эти проекты не зависят друг от друга (не совсем верно, поскольку они ссылаются на общий проект, но это не должно относиться к вопросу).
Мое определение VSTS состоит из двух этапов:
- один для создания webapi (называемый azureAndBackend) в очереди vsts Hosted VS2017
- еще один для создания приложения (называемого iOS) в очереди VST Hosted MacOS Preview
- phase: azureAndBackend
displayName: Azure and backend
queue:
name: Hosted VS2017
...
- phase: iOS
displayName: iOS
dependsOn: azureAndBackend
queue:
name: Hosted macOS Preview
Фаза azureAndBackend в порядке.
Однако фаза ios завершается с ошибкой при выполнении задачи dotnet restore
:
- task: NuGetCommand@2
displayName: NuGet restore
inputs:
restoreSolution: '**/*.sln'
Действительно, он восстанавливает пакеты для всего решения (включая webapi), в то время как .netcore 2.1 sdk еще не установлен в очереди Предварительного просмотра размещенного macOS (см. Страницу spec ).
Итак, я попробовал следующее:
- task: NuGetCommand@2
displayName: NuGet restore
inputs:
restoreSolution: '**/*.iOS/*.csproj'
Тогда шаг восстановления в порядке.
Однако теперь этап сборки завершается неудачно:
- task: XamariniOS@2
displayName: 'Building iOS'
inputs:
solutionFile: '**/*.sln'
configuration: 'iOS'
ошибка:
'/Users/vsts/agent/2.134.2/work/1/s/MyApp.Services.Interfaces/obj/project.assets.json' not found. Run a NuGet package restore to generate this file.
Обратите внимание, что конфигурация iOS
является копией конфигурации Release
, но там, где я не собираю проект webapi.
Вопрос в том, как написать определение сборки, как если бы в решении не было проекта webapi?
ОБНОВЛЕНИЕ
Я думаю, что обходной путь - создать 3 решения
- тот, который у меня уже есть и разрабатывается на
- только с проектом iOS
- один только с проектом webapi
Тогда фазы будут строить свое собственное решение.
Это не «реальный» ответ на вопрос.