ASP.NET Core仅部署适用的应用程序设置。{EnvironmentName} .json

时间:2019-08-02 15:58:27

标签: asp.net-core web-deployment msdeploy

我已经制作了第一个概念验证ASP.NET Core应用程序,我有5个appsettings文件:

  1. appsettings.json
  2. appsettings.Development.json
  3. appsettings.Test.json
  4. appsettings.Staging.json
  5. appsettings.Production.json

我正在IIS中运行该应用程序,因此实际上我具有web.config文件,以便可以针对每个应用程序设置ASPNETCORE_ENVIRONMENT环境变量:

<?xml version="1.0" encoding="utf-8"?>
<configuration>

  <system.webServer>

    <aspNetCore processPath="dotnet" >
      <environmentVariables>
        <environmentVariable name="ASPNETCORE_ENVIRONMENT" value="Development"></environmentVariable>
      </environmentVariables>
    </aspNetCore>

  </system.webServer>

</configuration>

我有4个web.config转换,因此可以从Visual Studio中进行发布,它将为每个环境设置正确的环境变量值。

当我发布到每个环境时,尽管它会发布所有appsettings文件。是否可以将其发布在根appsettings.json和适用于环境的特定版本之一上,而忽略其他版本?

1 个答案:

答案 0 :(得分:2)

否,不可能。 ASP.NET Core与ASP.NET不同。在ASP.NET中,您实际上是为环境发布的;如果您想切换到其他环境,则需要重新发布。 ASP.NET Core是针对所有环境发布的。可以将同一发布的应用程序拾取并移动到任何环境,而无需进行更改。实际环境通常是外部化的,例如via和环境变量,并且可以随时更改,而无需部署新代码。这实际上是ASP.NET Core的功能

现在,您处理环境变量的方式确实使它依赖于发布,但这只是修改web.config,它本身仅在部署到IIS时才有意义。 ASP.NET Core本身不关心或不使用web.config,并且说实话甚至不关心或不使用发布配置。