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

如何在Azure Pipeline中指定路径仅部署目标CSPROJ文件

解决Pipeline中排除备份csproj文件的问题

我有两个csproj文件,不需要将备份文件纳入Pipeline部署流程,但当前配置会包含它,导致因缺少依赖部署失败。需要修改现有Pipeline配置,仅让Nftexport相关的csproj参与执行。

修改后的Pipeline配置

pool:
  vmImage: 'ubuntu-latest'
trigger:
 branches:
   include:
     - dev
 paths:
   include:
     - NftImportExportScanner/*
   # 可选:备份文件变更时不触发Pipeline,可添加此规则
   exclude:
     - NftImportExportScanner/*Backup*.csproj

variables:
  buildConfiguration: 'release'

steps:
- task: UseDotNet@2
  displayName: 设置.NET Core版本为6.x
  inputs:
    packageType: 'sdk'
    version: '6.x'
    installationPath: $(Agent.ToolsDirectory)/dotnet


- task: DotNetCoreCLI@2
  displayName: 执行dotnet restore
  inputs:
    command: restore
    feedsToUse: 'select'
    vstsFeed: '39b14414-e819-472c-a8c9-e1b150e85a52/1e69f816-5f54-4793-9746-2a8eed83160b'
    # 方式1:直接匹配目标csproj(比如主文件是NftExport开头的)
    projects: '**/NftImportExportScanner/NftExport*.csproj'
    # 方式2:匹配所有csproj但排除备份文件(备份文件名含Backup关键字时用)
    # projects: |
    #   **/NftImportExportScanner/*.csproj
    #   !**/NftImportExportScanner/*Backup*.csproj
    includeNuGetOrg: true


- task: DotNetCoreCLI@2
  displayName: 执行dotnet build
  inputs:
    command: 'build'
    # 与restore任务的projects规则保持一致
    projects: '**/NftImportExportScanner/NftExport*.csproj'
    # projects: |
    #   **/NftImportExportScanner/*.csproj
    #   !**/NftImportExportScanner/*Backup*.csproj
    zipAfterPublish: true
    arguments: '--configuration $(buildConfiguration)'

- task: DotNetCoreCLI@2
  displayName: 执行dotnet publish
  inputs:
    command: publish
    arguments: '--configuration $(buildConfiguration) --output publish_output --no-restore'
    publishWebProjects: false
    modifyOutputPath: false
    zipAfterPublish: false
    workingDirectory: '$(System.DefaultWorkingDirectory)/NftImportExportScanner'

- task: ArchiveFiles@2
  displayName: 归档文件
  inputs:
    rootFolderOrFile: "$(System.DefaultWorkingDirectory)/NftImportExportScanner/publish_output"
    includeRootFolder: false
    archiveFile: "$(System.DefaultWorkingDirectory)/build$(Build.BuildNumber).zip"
- task: PublishBuildArtifacts@1
  displayName: 导出构建产物
  inputs:
    PathtoPublish: '$(System.DefaultWorkingDirectory)/build$(Build.BuildNumber).zip'
    artifactName: 'drop_$(Build.BuildNumber)_$(Build.SourceBranchName)'

关键修改说明

  1. 精准锁定目标项目:在restore和build任务中,将projects字段从匹配所有.csproj改为只匹配Nftexport相关文件(比如用NftExport*.csproj通配符),直接避开备份文件。
  2. 排除规则兜底:如果没法通过命名精准匹配,可使用多行路径规则,先包含所有csproj再排除带备份标识的文件(比如文件名含Backup)。
  3. 触发规则优化:在trigger.paths中添加exclude规则,避免备份文件变更时触发不必要的Pipeline构建。

内容的提问来源于stack exchange,提问作者Darragh Martin

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 13:37:50