首页 > 解决方案 > 在解决方案中构建两个项目,但只有 1 个进入放置文件夹

问题描述

有 5 个项目的解决方案。其中两个需要构建并作为单独的工件发布以进行部署。(1) .net framework web app 和 (1) .net framework windows service

服务项目的存档显示在放置文件夹中,但不显示在 Web 应用程序中。我搞砸了什么?

我的 yaml 文件

# .NET Desktop
# Build and run tests for .NET Desktop or Windows classic desktop solutions.
# Add steps that publish symbols, save build artifacts, and more:
# https://docs.microsoft.com/azure/devops/pipelines/apps/windows/dot-net

trigger:
- master

pool:
  vmImage: 'windows-latest'

variables:
  solution: '**/*.sln'
  mySvc: '**/my.svcproj.srvc/my.svcproj.srvc.csproj'
  myWeb: '**/my.webapp.Web/my.webapp.Web.csproj'
  buildPlatform: 'Any CPU'
  buildConfiguration: 'Release'

steps:
- task: NuGetToolInstaller@1

- task: NuGetCommand@2
  inputs:
    restoreSolution: '$(solution)'

# srvc
- task: VSBuild@1
  inputs:
    solution: '$(mySvc)'
    msbuildArgs: '/p:OutputPath="$(Build.BinariesDirectory)\$(Build.BuildId)\srvc"'
    platform: '$(buildPlatform)'
    configuration: '$(buildConfiguration)'

# srvc
- task: ArchiveFiles@2
  inputs:
    rootFolderOrFile: '$(Build.BinariesDirectory)\$(Build.BuildId)\srvc'
    includeRootFolder: false
    archiveType: 'zip'
    archiveFile: '$(Build.ArtifactStagingDirectory)/$(Build.BuildId)-srvc.zip'
    replaceExistingArchive: true

# web
- task: VSBuild@1
  inputs:
    solution: '$(myWeb)'
    msbuildArgs: '/p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=true /p:PackageLocation="$(build.artifactStagingDirectory)"'
    platform: '$(buildPlatform)'
    configuration: '$(buildConfiguration)'

- task: PublishBuildArtifacts@1
  inputs:
    PathtoPublish: '$(Build.ArtifactStagingDirectory)'
    ArtifactName: 'drop'
    publishLocation: 'Container'

[更新 1]
作为测试,我取出了 svc 的步骤并离开了 web 构建。我在构建日志中得到这个

##[警告]C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Current\Bin\Microsoft.Common.CurrentVersion.targets(778,5):警告:未设置 OutputPath 属性项目'my.webapp.Web.csproj'。请检查以确保您为此项目指定了有效的配置和平台组合。配置='调试'平台='任何 CPU'。您可能会看到此消息,因为您正在尝试构建没有解决方案文件的项目,并且指定了该项目不存在的非默认配置或平台。

相关的 csproj 部分如下所示

  <PropertyGroup>
    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> 

标签: azure-pipelines

解决方案


而不是使用 PublishBuildArtifacts 尝试使用PublishPipelineArtifact

  - task: PublishPipelineArtifact@1
  inputs:
    targetPath: '$(Build.ArtifactStagingDirectory)'
    artifactName: 'drop'

建议这样做,因为 PublishBuildArtifacts 最终将被 PublishPipelineArtifact 取代,并朝着更多管道的方向发展。这应该为您发布所有内容。


推荐阅读