如何创建支持.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
相关产品推荐
相关产品推荐

