azure-pipelines - 在解决方案中构建两个项目,但只有 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>
解决方案
而不是使用 PublishBuildArtifacts 尝试使用PublishPipelineArtifact
- task: PublishPipelineArtifact@1
inputs:
targetPath: '$(Build.ArtifactStagingDirectory)'
artifactName: 'drop'
建议这样做,因为 PublishBuildArtifacts 最终将被 PublishPipelineArtifact 取代,并朝着更多管道的方向发展。这应该为您发布所有内容。
推荐阅读
- vba - 循环偏移“向上”列
- android - 移动到另一个活动时黑屏 3 秒?
- c# - 有没有办法用 Visual Studio 模拟自动启动?
- matlab - 如何为所有图形设置相同的大小以保存在 Matlab 中?
- ios - 在 ASTextNode 中没有 LinkAttribute 的 TouchUpInside
- javascript - 如果没有价值如何显示没有筹码的区域
- php - DataTables - PHP while 循环问题找不到最后一个结果并添加新的 TR
- jquery - JQuery 添加类。通过搜索具有相同类的所有元素
- design-patterns - 在 DAO 中存储验证是个好主意吗?
- scala - TapeEquilibrium ScalaCheck