我有以下代码来azure-pipelines.yml
发布 2 个项目:
trigger:
branches:
include:
- main
pool:
vmImage: 'windows-latest'
steps:
- task: UseDotNet@2
displayName: 'Use .NET'
inputs:
packageType: 'sdk'
version: '8.0.x'
- task: NuGetToolInstaller@1
displayName: 'NuGet Installer'
- task: VSBuild@1
displayName: 'Restore WinUI3Project'
inputs:
solution: 'src/WinUI3Project/WinUI3Project.csproj'
msbuildArgs: '/restore /p:Configuration=Release /p:Platform="x64"'
- task: VSBuild@1
displayName: 'Restore BlazorServerProject'
inputs:
solution: 'src/BlazorServerProject/BlazorServerProject.csproj'
msbuildArgs: '/restore /p:Configuration=Release /p:Platform="x64"'
- task: DotNetCoreCLI@2
displayName: 'Publish WinUI3Project'
inputs:
command: 'publish'
arguments: '--configuration Release --output $(Build.BinariesDirectory)\WinUI3Project'
projects: 'src/WinUI3Project/WinUI3Project.csproj'
- task: CopyFiles@2
displayName: 'Copy WinUI3Project Files to Staging Directory'
inputs:
SourceFolder: '$(Build.BinariesDirectory)\WinUI3Project'
Contents: '**'
TargetFolder: '$(Build.ArtifactStagingDirectory)\WinUI3Project'
- task: DotNetCoreCLI@2
displayName: 'Publish BlazorServerProject'
inputs:
command: 'publish'
arguments: '--configuration Release --output $(Build.BinariesDirectory)\BlazorServerProject'
projects: 'src/BlazorServerProject/BlazorServerProject.csproj'
- task: CopyFiles@2
displayName: 'Copy BlazorServerProjectFiles to Staging Directory'
inputs:
SourceFolder: '$(Build.BinariesDirectory)\BlazorServerProject'
Contents: '**'
TargetFolder: '$(Build.ArtifactStagingDirectory)\BlazorServerProject'
- task: PublishBuildArtifacts@1
displayName: 'Publish Build Artifacts'
inputs:
pathToPublish: '$(Build.ArtifactStagingDirectory)'
artifactName: 'drop'
publishLocation: 'Container'
然而,当我查看我发布的工件时,我得到了这个:
drop
├─ WinUI3Project
| └─ BlazorServerProject.zip
└─ BlazorServerProject
└─ BlazorServerProject.zip
两个 zip 文件包含相同的项目/文件,即它们是相同的。如果我重新排序 yaml 文件,以便首先构建、发布和复制 blazor 服务器项目,我会得到相同的结果:两次都是 blazor 服务器项目。
我尝试使用相同的 DotNetCoreCLI@2 步骤发布两个项目,但找不到可在同一步骤中发布 2 个特定项目的语法。通过**/*.csproj
不适合我的用例,因为存储库包含不应在管道中构建的其他项目。
我不是在寻找解决方法(例如,创建一个.sln
仅包含我想要构建的项目的新文件),而是了解为什么管道会以这种方式运行,以及一种专门针对 2 个.csproj
文件以发布到构建的方法文物。
请参阅此文档:DotNetCoreCLI@2 - .NET Core v2 任务
当您使用 dotnet 发布任务来构建项目时,您需要
publishWebProjects
将false
. 然后projects
字段值将按预期工作。如果值为 true,它将忽略项目字段并在存储库中发布 Web 项目。例如:
这是完整的 YAML:
在这种情况下,两个 zip 文件中的内容将会不同。