如何修改Azure DevOps中构建产物文件名并添加构建编号
问题解答
一、构建产物文件名“WebApplication1”的来源
这个名称的根源是你在Visual Studio中创建ASP.NET Core WebApp项目时指定的项目名称,具体关联点有两个:
- 项目配置文件:项目根目录下的
WebApplication1.csproj文件中,默认包含<AssemblyName>WebApplication1</AssemblyName>节点,这个值是构建输出产物的基础名称来源。 - Azure DevOps构建任务:如果使用默认的ASP.NET Core构建模板,
DotNetCoreCLI@2的publish命令在未显式指定输出文件名时,会自动读取项目的AssemblyName值作为部署包/输出目录的名称,最终同步到drop目录中。
二、修改drop目录产物文件名,添加构建编号的方法
根据你输出产物的类型(文件夹或zip包),可以选择以下两种常用方式:
方式1:在DotNet Publish任务中直接指定带构建编号的输出路径
通过dotnet publish命令的参数直接定义输出名称,一步到位:
- 如果输出是文件夹形式:
- task: DotNetCoreCLI@2 displayName: '发布Web应用' inputs: command: 'publish' projects: '**/WebApplication1.csproj' arguments: '--configuration $(BuildConfiguration) --output $(Build.ArtifactStagingDirectory)/WebApplication1_$(Build.BuildNumber)' publishWebProjects: false
- 如果输出是zip包形式,使用
--zip-file-path参数:
- task: DotNetCoreCLI@2 displayName: '发布Web应用为Zip包' inputs: command: 'publish' projects: '**/WebApplication1.csproj' arguments: '--configuration $(BuildConfiguration) --zip-file-path $(Build.ArtifactStagingDirectory)/WebApplication1_$(Build.BuildNumber).zip' publishWebProjects: false
之后执行PublishBuildArtifacts@1任务时,直接将上述输出路径发布到drop即可。
方式2:先完成Publish,再通过重命名任务调整文件名
如果需要保留原Publish流程,可在之后添加重命名步骤:
- 先正常Publish到临时目录:
- task: DotNetCoreCLI@2 displayName: '发布Web应用到临时目录' inputs: command: 'publish' projects: '**/WebApplication1.csproj' arguments: '--configuration $(BuildConfiguration) --output $(Build.ArtifactStagingDirectory)/temp' publishWebProjects: false
- 用CopyFiles任务将临时目录的内容复制到带构建编号的新目录:
- task: CopyFiles@2 displayName: '重命名并复制到 staging 目录' inputs: SourceFolder: '$(Build.ArtifactStagingDirectory)/temp' TargetFolder: '$(Build.ArtifactStagingDirectory)/WebApplication1_$(Build.BuildNumber)'
- 发布新目录到drop:
- task: PublishBuildArtifacts@1 displayName: '发布产物到drop' inputs: PathtoPublish: '$(Build.ArtifactStagingDirectory)/WebApplication1_$(Build.BuildNumber)' ArtifactName: 'drop' publishLocation: 'Container'
如果是Zip包,也可以用PowerShell任务直接重命名:
- task: PowerShell@2 displayName: '重命名Zip包' inputs: targetType: 'inline' script: | Rename-Item -Path "$(Build.ArtifactStagingDirectory)/WebApplication1.zip" -NewName "WebApplication1_$(Build.BuildNumber).zip"
内容的提问来源于stack exchange,提问作者Gamer X.
相关产品推荐
相关产品推荐

