用于存储库的 Azure DevOps 管道,包含具有多个项目且相互依赖的多个解决方案

问题描述 投票:0回答:2

我是 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

我需要的最佳方法是什么?

azure azure-devops azure-pipelines
2个回答
0
投票

您是否会考虑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)'

因此,您不必每次都一起构建两个解决方案。


0
投票

管道终于开始工作了。由于未针对 x64 平台配置一个项目,因此出现错误。该项目的输出是

\bin\release
,但是
\bin\x64\release
是其他项目找到的。

© www.soinside.com 2019 - 2024. All rights reserved.