You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何创建支持.NET 6、.NET 7、.NET 8的YAML构建文件?

多.NET版本(net6.0/net7.0/net8.0)构建解决方案

以下是修改后的完整YAML构建文件,可同时支持三个.NET版本的编译与发布:

trigger:
- main

pool:
  vmImage: 'windows-latest'

variables:
  buildConfiguration: 'Release'
  # 统一管理需要构建的目标框架,用空格分隔
  targetFrameworks: 'net6.0 net7.0 net8.0'

steps:
- script: echo 'Starting the build for multiple .NET frameworks'
  displayName: 'Starting Multi-Framework Build'

- script: dotnet restore
  displayName: 'Restore Dependencies for All Frameworks'

- script: dotnet build --configuration $(buildConfiguration) --no-restore
  displayName: 'Build All Target Frameworks'

# 循环遍历每个目标框架,单独发布到对应子目录
- ${{ each framework in split(variables.targetFrameworks, ' ') }}:
  - task: DotNetCoreCLI@2
    inputs:
      command: 'publish'
      publishWebProjects: true
      arguments: '--configuration $(buildConfiguration) --output $(Build.ArtifactStagingDirectory)/${{ framework }} -property:TargetFramework=${{ framework }} --no-restore'
      zipAfterPublish: false
    displayName: 'Publish Artifact for ${{ framework }}'

- task: PublishPipelineArtifact@1
  inputs:
    targetPath: '$(Build.ArtifactStagingDirectory)'
    artifact: 'myAppMultiFrameworkBuild'
    publishLocation: 'pipeline'
  displayName: 'Publish Multi-Framework Build Artifact'

关键改动说明

  • 新增targetFrameworks变量:集中管理要构建的.NET版本,后续新增/移除版本只需修改此变量,无需调整步骤逻辑
  • 发布步骤改为循环执行:通过${{ each }}语法遍历每个框架,将每个版本的产物输出到$(Build.ArtifactStagingDirectory)/[框架名]子目录,彻底避免不同版本的文件覆盖问题
  • 保留原有还原与构建步骤:dotnet restore和dotnet build会自动识别项目文件中的多框架配置,无需额外参数即可完成所有版本的依赖还原与编译
  • 构件名称优化:将构件名改为myAppMultiFrameworkBuild,明确标识这是多版本构建产物

内容的提问来源于stack exchange,提问作者Adnan Hodzic

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 04:22:14