在一个解决方案中构建两个项目,但只有一个项目进入投递文件夹



拥有一个包含5个项目的解决方案。其中两个需要作为单独的工件进行构建和发布以进行部署。(1( .net框架web应用程序和(1(.net框架窗口服务

服务项目的存档显示在放置文件夹中,但不显示在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://learn.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'

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

##[警告]C:\Program Files(x86(\Microsoft Visual Studio\2019\Enterprise\MBuild\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取代,并朝着更多管道的方向发展。这应该会为您发布所有内容。

相关内容

最新更新