【发布时间】:2021-11-03 15:43:21
【问题描述】:
我发现 .NET 应用程序的构建 CI 管道中的复制任务有些奇怪。我们就叫它JJ。
由于某种原因,Web.Dev.config、Web.Test.config 和 Web.Prod.config 文件没有被复制到工件……我有另一个用于类似架构的应用程序的管道,所以管道的设置方式相同,我确认对于其他应用程序,我们称之为 EE,这些文件将被复制到工件中,但使用 JJ由于某种原因,它们没有被复制。
EE 应用程序工件(复制任务正在运行的其他应用程序):
JJ 应用工件(有问题的应用,仅复制 Web.config):
即使目录中有明确的 Dev/Test/Prod 配置
JJ 复制任务 YAML:
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 复制任务 YAML(正在复制配置文件的应用程序)
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'
正如您所看到的,复制任务 YAML 非常相同,存储库结构/文件位置也是如此。那么为什么它适用于 EE 而不是 JJ?
编辑:
比较 JJ .csproj 文件与 EE .csproj 文件,我们观察到 JJ .csproj 文件中的 web.dev.config、web.test.config 和 web.prod.config 文件引用缺少标记:<content Include>
为项目中的文件启用此属性可解决问题:
【问题讨论】:
标签: azure-devops azure-pipelines