如何在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)'
关键修改说明
- 精准锁定目标项目:在
restore和build任务中,将projects字段从匹配所有.csproj改为只匹配Nftexport相关文件(比如用NftExport*.csproj通配符),直接避开备份文件。 - 排除规则兜底:如果没法通过命名精准匹配,可使用多行路径规则,先包含所有csproj再排除带备份标识的文件(比如文件名含
Backup)。 - 触发规则优化:在
trigger.paths中添加exclude规则,避免备份文件变更时触发不必要的Pipeline构建。
内容的提问来源于stack exchange,提问作者Darragh Martin
相关产品推荐
相关产品推荐

