我已经制作了第一个概念验证ASP.NET Core应用程序,我有5个appsettings文件:
我正在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和适用于环境的特定版本之一上,而忽略其他版本?
答案 0 :(得分:2)
否,不可能。 ASP.NET Core与ASP.NET不同。在ASP.NET中,您实际上是为环境发布的;如果您想切换到其他环境,则需要重新发布。 ASP.NET Core是针对所有环境发布的。可以将同一发布的应用程序拾取并移动到任何环境,而无需进行更改。实际环境通常是外部化的,例如via和环境变量,并且可以随时更改,而无需部署新代码。这实际上是ASP.NET Core的功能。
现在,您处理环境变量的方式确实使它依赖于发布,但这只是修改web.config,它本身仅在部署到IIS时才有意义。 ASP.NET Core本身不关心或不使用web.config,并且说实话甚至不关心或不使用发布配置。