我有一个具有.netcore2.1 webapi和xamarin.iOS应用程序的解决方案。
这些项目互不依赖(因为它们引用共享项目并不完全正确,但这与问题无关)。
我的vsts构建定义分为两个阶段:
- 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),而Hosted macOS预览队列上尚未安装.netcore 2.1 sdk(请参见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个解决方案
然后,各个阶段将建立自己的解决方案。 不过,这不是问题的“真实”答案。
答案 0 :(得分:0)
对于所有任务,请确保您指向特定的解决方案文件和解决方案目录。您的**/*.sln
将在“源”文件夹中构建所有解决方案。