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

DevOps IIS发布流水线部署ASP.NET Core应用未提取文件到正确位置

问题解决方法
  • 初始配置中IISWebAppDeploymentOnMachineGroup@0任务的Package参数指向了根工作目录,而非具体的应用压缩包,导致部署任务会完整拉取artifact的目录结构,产生两层多余的{artifactName}目录,同时无法触发自动解压逻辑
  • 初始配置同时调用了VSBuild打包和DotNetCoreCLI发布,存在重复打包逻辑,冗余且容易引发路径冲突
  • 更新后的配置缺少DotNetCoreCLI发布步骤,直接发布了编译后的bin目录,且仍然未修正部署任务的路径指向问题

修正后完整YAML配置

trigger:
- development

pool:
  vmImage: 'windows-latest'

variables:
  solution: '**/*.sln'
  buildPlatform: 'Any CPU'
  buildConfiguration: 'Release'

steps:
- task: NuGetToolInstaller@1

- task: NuGetCommand@2
  inputs:
    restoreSolution: '$(solution)'

- task: DotNetCoreCLI@2
  displayName: Build
  inputs:
    command: build
    projects: '**/*.csproj'
    arguments: '--configuration $(buildConfiguration)' 

- task: DotNetCoreCLI@2
  inputs:
    command: publish
    publishWebProjects: True
    arguments: '--configuration $(BuildConfiguration) --output $(Build.ArtifactStagingDirectory)/publish'
    zipAfterPublish: True

# 直接发布压缩包,避免外层目录
- task: PublishPipelineArtifact@1
  inputs:
    targetPath: '$(Build.ArtifactStagingDirectory)/publish/*.zip' 
    artifactName: '{artifactName}'

- task: IISWebAppDeploymentOnMachineGroup@0
  displayName: 'IIS Web App Deploy'
  inputs:
    WebSiteName: '{你的站点名}'
    # 明确指定到压缩包路径,触发自动解压
    Package: '$(System.DefaultWorkingDirectory)/{artifactName}/*.zip'
    RemoveAdditionalFilesFlag: true
    XmlVariableSubstitution: True
    TakeAppOfflineFlag: true

关键改动说明

  • 移除了冗余的VSBuild打包步骤,仅保留DotNetCoreCLI的编译、发布逻辑
  • 发布步骤指定输出到单独的publish目录,避免暂存目录下其他无关文件被打包
  • 发布artifact时直接指向zip包,而非整个目录,减少多余层级
  • 部署任务的Package参数明确匹配到下载后的zip包路径,任务会自动将压缩包内的所有文件直接解压到站点配置的物理路径%SystemDrive%\sites\{mysite}下,不会产生多余目录

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 05:36:03