【问题标题】:How to set value for a key in appsettings.json file during build time如何在构建期间为 appsettings.json 文件中的键设置值
【发布时间】:2019-09-17 20:16:12
【问题描述】:

对于我的 ASP.NET 核心解决方案,我有一个 appsettings.json 文件,它看起来像这样

{
  "Branch": {
    "Name": "test"
  },
}

如果我想将“Branch.Name”的值替换为其他文本,例如 build 时的“prod”。我如何做到这一点?

编辑:我知道 .net 核心的“ASPNETCORE_ENVIRONMENT”环境变量和特定于环境的 appsettings 文件。但不幸的是,由于某种难以解释的原因,我仍然需要在构建时为“appsettings.json”文件中的键设置值...

【问题讨论】:

  • “构建时间”是什么意思?一些服务(例如 DevOps 和 Octopus Deploy)支持 JSON 替换...
  • @KirkLarkin,我使用 bitbucket 管道。是否支持 JSON 替换?

标签: asp.net asp.net-core


【解决方案1】:

这不是 ASP.NET Core 中配置的工作方式。它适用于覆盖系统,因此您无需从字面上更改值,而是使用更突出的源覆盖这些值。

默认情况下,appsettings.json 实际上是最低优先级的配置源。它可以被所有特定于环境的 JSON(例如appsettings.Production.json)、环境变量和/或命令行参数覆盖。

出于此处的目的,您应该查看特定于环境的 JSON 和/或环境变量。例如,如果您创建一个 appsettings.Production.json 的内容:

{
  "Branch": {
    "Name": "prod"
  },
}

然后将您的部署环境设置为Production(即ASPNETCORE_ENVIRONMENT 环境变量),那么Branch.Name 在该环境中将是prod。同样,您可以将Branch:Name 环境变量设置为prod,这也会覆盖该值。

【讨论】:

  • 对不起,我忘了提到我知道 .net 核心的“ASPNETCORE_ENVIRONMENT”环境变量和特定于环境的 appsettings 文件。但不幸的是,由于某种难以解释的原因,我仍然需要在构建时为“appsettings.json”文件中的键设置值...
  • 没有这样的机制。因此,最好将注意力集中在您认为必须这样做的问题上,因为不应该有需要。
【解决方案2】:

是的,没有内置的方法可以做到这一点。我最终通过使用 jq 解决了这个问题。阅读此question 的答案。

【讨论】:

  • 另外,我发现SlowCheetah可以用来做这个。
猜你喜欢
  • 2023-04-01
  • 2021-03-20
  • 2015-01-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-10-11
  • 1970-01-01
相关资源
最近更新 更多