Web.*env*.config文件未被复制到CI构建制品的原因是什么?
.NET应用CI构建环境配置文件未复制问题排查记录
问题现象
JJ项目(.NET应用)CI构建流水线的复制任务执行后,Web.Dev.config、Web.Test.config、Web.Prod.config三个环境配置文件未出现在最终构建制品中。
同架构EE项目的流水线配置与JJ完全一致,对应配置文件可正常复制到制品。已提前确认以下信息:
- JJ代码仓库中存在对应的三个环境配置文件
- 两个项目的CopyFiles任务YAML配置完全相同
- 两个项目的仓库目录结构、配置文件存储路径完全一致
流水线CopyFiles任务配置
JJ项目配置
steps: - task: CopyFiles@2 displayName: 'Copy Files to: $(Build.ArtifactStagingDirectory)/Release' inputs: SourceFolder: '$(Build.ArtifactStagingDirectory)/_PublishedWebsites/JJDashboard' Contents: | assets/** bin/** Bundles/** Content/** Scripts/** Views/** Web.config Web.Dev.config Web.Test.config Web.Prod.config ApplicationInsights.config *.asax *.ico *.txt TargetFolder: '$(Build.ArtifactStagingDirectory)/Release'
EE项目配置
steps: - task: CopyFiles@2 displayName: 'Copy Files to: $(Build.ArtifactStagingDirectory)/Release' inputs: SourceFolder: '$(Build.ArtifactStagingDirectory)/_PublishedWebsites/EEDashboard' Contents: | assets/** bin/** Bundles/** Content/** Scripts/** Views/** Web.config Web.Dev.config Web.Test.config Web.Prod.config ApplicationInsights.config *.asax *.ico *.txt TargetFolder: '$(Build.ArtifactStagingDirectory)/Release'
根因与解决方案
对比两个项目的.csproj工程文件发现,JJ项目中三个环境配置文件的引用缺少<content Include>标签,为对应文件添加该属性后问题解决。
补充说明:.NET项目构建发布时,仅会将.csproj中标记为Content类型的文件输出到发布目录,未配置该属性的文件仅保留在代码仓库中,不会出现在_PublishedWebsites下的构建输出目录,因此后续CopyFiles任务无法匹配到对应文件。
内容的提问来源于stack exchange,提问作者Cataster
相关产品推荐
相关产品推荐

