【问题标题】:Azure Release Pipeline IIS Web App Deploy replace appsettings.jsonAzure Release Pipeline IIS Web App Deploy 替换 appsettings.json
【发布时间】:2020-08-09 11:40:23
【问题描述】:

我正在通过包含 2 个任务的 Azure Release Pipeline 将 Web 应用程序部署到 on prim windows 服务器。 IIS Web App 管理和 IIS Web App 部署。

我遇到的问题是我需要用完全不同的文件替换 appsettings.json。我们有 3 个环境(dev/test/prod),每个环境在源代码控制中都有自己的 appsettings.json。

我看到有一个JSON变量替换,但是我不想替换变量,我想说“嘿,用这个文件而不是这个文件”。

如何在 Azure Devops 中执行此操作?如果我对这一切都错了,请告诉我。这是我公司多年来一直在做的事情,我真的不想在管道中创建变量来更新我的 appsettings.json。

谢谢!

【问题讨论】:

  • 未获得您的最新信息。如果以下答案之一对您有用,您可以考虑将其标记为答案,如果您有任何疑问,请随时在此处分享。

标签: iis azure-devops azure-pipelines web-deployment


【解决方案1】:

要根据不同的环境使用对应的appsettings.json吗?如果是这样,核心项目可以从appsettings.[environment].json文件中检索数据到ASPNETCORE_ENVIRONMENTenvironment variable

1.在项目中添加对应的appsettings.[environment].json文件,如appsettings.Production.jsonappsettings.Development.json,并在每个文件中设置对应的值。

2.启动文件中的代码:

public Startup(IHostingEnvironment env)
        {
            var builder = new ConfigurationBuilder()
                .SetBasePath(env.ContentRootPath)
                .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
                .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true)
                .AddEnvironmentVariables();
            Configuration = builder.Build();
        }

3.为每台环境机器设置/添加ASPNETCORE_ENVIRONMENT环境变量(只需设置/添加一次)

这里是参考:Configuration in ASP.NET Corecase

【讨论】:

  • 感谢您的回复!有没有办法在发布管道中设置环境变量?
  • 可以添加PowerShell on Target Machines任务发布管道设置环境变量。
【解决方案2】:

您需要为每个环境创建appsettings.json,然后以这种方式更改您的代码:

public Startup(IHostingEnvironment env)
{
    var builder = new ConfigurationBuilder()
    .SetBasePath(env.ContentRootPath)
    .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
    .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true)
    .AddEnvironmentVariables();
    this.configuration = builder.Build();
}

您需要为您的环境定义名为ASPNETCORE_ENVIRONMENT 的环境变量DevStagingWahtever you like env name

如果您需要更多信息,您可以在这里找到很棒的blog post

这里还有很多关于设置 env 文件的信息。 Automatically set appsettings.json for dev and release environments in asp.net core?

【讨论】:

  • 感谢您的回复!有没有办法在发布管道中设置环境变量?
  • 是的,你可以。您需要在远程机器上运行例如 powershell 脚本来设置ASPNETCORE_ENVIRONMENT 。请我们为此任务 - docs.microsoft.com/en-us/azure/devops/pipelines/tasks/deploy/… 但我建议您在每个环境中手动执行。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-01-30
  • 1970-01-01
  • 1970-01-01
  • 2019-05-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多