Azure Pipelines中Asp.Net项目PublishBuildArtifacts任务如何避免压缩产物
.Net Core - 发布产物任务
以下代码会在drop文件夹中生成发布产物,但输出格式为zip文件,且该任务仅适用于.Net Core项目。
- task: DotNetCoreCLI@2 displayName: 'dotnet publish' inputs: command: 'publish' publishWebProjects: false projects: 'src/myproj/*.csproj' arguments: -o $(build.artifactStagingDirectory)
如果我们在inputs中添加zipAfterPublish: false属性,即可避免产物被压缩。
Asp.Net - 发布产物任务
以下是上述场景对应的Asp.Net版本发布任务代码:
- task: PublishBuildArtifacts@1 displayName: 'Publish Artifact' inputs: PathtoPublish: '$(build.artifactstagingdirectory)' ArtifactName: '$(Parameters.ArtifactName)' condition: succeededOrFailed()
我们可以在.Net Core场景下避免产物被压缩,但Asp.Net版本的发布任务没有对应的可配置属性。请问如何在Asp.Net版本的Publish Artifact任务中避免产物被压缩?
解答
PublishBuildArtifacts@1 任务本身仅负责将指定路径的文件原样上传为流水线产物,不会主动对文件做压缩处理。你看到的产物为zip格式,是因为此前ASP.NET项目的构建步骤默认配置了生成压缩部署包,修改构建阶段的MSBuild参数即可解决,操作如下:
- 找到流水线中负责构建ASP.NET项目的
VSBuild@1或MSBuild@1任务,修改其msbuildArgs参数配置,示例如下:
- task: VSBuild@1 inputs: solution: '**/*.sln' msbuildArgs: '/p:DeployOnBuild=true /p:WebPublishMethod=FileSystem /p:publishUrl="$(Build.ArtifactStagingDirectory)" /p:DeployDefaultTarget=WebPublish' platform: '$(BuildPlatform)' configuration: '$(BuildConfiguration)'
- 参数调整说明:
- 将
WebPublishMethod从默认值Package修改为FileSystem,构建时就会直接输出零散的站点文件而非zip包 publishUrl指定生成的未压缩站点文件直接输出到构建暂存目录,后续PublishBuildArtifacts@1任务会直接上传这些未压缩文件,不会生成zip格式产物。
- 将
内容的提问来源于stack exchange,提问作者mevsim
相关产品推荐
相关产品推荐

