我是 Azure DevOps 的新手。我有一个包含多个解决方案的存储库,每个解决方案都包含多个项目。这些项目相互依赖。项目面向 .NET 4.7.1。按顺序构建所有这些,我得到一个 WPF 应用程序包。
我想创建一个 Azure YAML 管道,但我不确定正确的方法。
这是我目前的管道:
trigger:
- none
#- desarrollo
pool:
vmImage: 'windows-latest'
variables:
buildPlatform: 'x64'
buildConfiguration: 'Release'
steps:
- task: NuGetToolInstaller@1
- task: NuGetCommand@2
inputs:
restoreSolution: 'Folder1/Solution_A.sln'
- task: VSBuild@1
inputs:
solution: 'Folder1/Solution_A.sln'
msbuildArgs: '/p:AzureBuild=true /p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=true /p:PackageLocation="$(build.artifactStagingDirectory)"'
platform: '$(buildPlatform)'
configuration: '$(buildConfiguration)'
- task: MSBuild@1
inputs:
solution: 'Folder2/Solution_B/Project_B1.csproj'
msbuildArguments: '/p:AzureBuild=true /p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=true /p:PackageLocation="$(Build.ArtifactStagingDirectory)"'
platform: '$(buildPlatform)'
configuration: '$(buildConfiguration)'
- task: CopyFiles@2
displayName: 'Copy Files to: $(Build.ArtifactStagingDirectory)'
inputs:
SourceFolder: '$(Build.SourcesDirectory)'
Contents: '**\bin\release\**'
flattenFolders: false
TargetFolder: '$(Build.ArtifactStagingDirectory)'
- task: PublishBuildArtifacts@1
inputs:
PathtoPublish: '$(Build.ArtifactStagingDirectory)'
ArtifactName: 'GicoopPlus'
publishLocation: 'Container'
Solution_B.Project_B1
依赖于项目 Solution_A.Project_A1
并且 Solution_A.Project_A1
依赖于 Solution_A.Project_A2
。
运行管道时,我在
MsBuild@1
任务上收到错误,因为它尚未找到 Solution_A.Project_A2.dll
。
我需要的最佳方法是什么?
您是否会考虑将Solution_A.Project_A1
生成的依赖项发布到Azure Artifacts一次?
您可以在构建之前恢复该 feed 的依赖关系
Solution_B
。
- task: DotNetCoreCLI@2
inputs:
command: 'restore'
projects: 'Solution_B.sln'
feedsToUse: 'select'
vstsFeed: '$(ProjectName)/$(ProjectScopeFeed-NuGet)'
因此,您不必每次都一起构建两个解决方案。
管道终于开始工作了。由于未针对 x64 平台配置一个项目,因此出现错误。该项目的输出是
\bin\release
,但是 \bin\x64\release
是其他项目找到的。