【问题标题】:Why are the Web.*env*.config files not being copied over to the artifact?为什么 Web.*env*.config 文件没有被复制到工件中?
【发布时间】: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


    【解决方案1】:

    检查新的 web.env.config 文件是否包含在 JJDasboard-project .csproj(或 .sln)文件中,因此它们将与构建结果一起发布。

    最明显的问题是构建会产生不同的结果,即。 EE 应用的构建将所有不同的配置复制到输出目录,而 JJ 应用的构建仅复制 web.config(默认情况下)。

    【讨论】:

    • 在复制任务之前我可以插入一个任务来检查目录以输出其中的内容吗?
    • 谢谢,所以结果返回了除了 web.*env*.config 之外的所有内容。 Web.Dev.config、Web.Test.config 和 Web.Prod.config 没有出现,尽管在 repo 中......事情是 Web.Release.config 和 Web.Debug.config 也在 repo 中,在同一个目录中……所以如果它们出现了,其他配置也应该出现……
    • 检查项目的 csproj- 或 sln-files 以及那些特定于环境的配置文件是否包含在那里的构建结果中。如果是,也将相同的包含添加到此项目中。
    • @JukkaK 这正是问题所在!这些文件在 .csproj 文件中被标记为 <None Include> 而不是 <Content Include>。你想编辑你的答案为未来的访问者提供更多的背景信息吗?如果你想包含,我已经在我的帖子中包含了一个屏幕截图:)
    猜你喜欢
    • 2012-07-02
    • 2013-08-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多