ASP.NET Web.Debug 和 Web.Release 文件转换

ASP.NET Web.Debug and Web.Release file transformations

首先我知道有几页关于这个问题,例如Web.Config Debug/Release, Web.config Transformation Syntax now generalized for any XML configuration file and Web.config File Transformations。但其中大部分已经过时,并且没有明确提及所有三个文件:Web.configWeb.Debug.configWeb.Release.config

因此,假设我对 Web.config 进行了以下设置:

Web.config:

<appSettings>
    <add key="ClientId" value="xxxxx"/>
    <add key="ClientSecret" value="xxxxx"/>
</appSettings>

我想通过以下方式在调试和发布中使用这些设置:

Web.Debug.config:

<appSettings>
    <add key="ClientId" value="ddddd"/>
    <add key="ClientSecret" value="ddddd"/>
</appSettings>

Web.Release.config:

<appSettings>
    <add key="ClientId" value="rrrrr"/>
    <add key="ClientSecret" value="rrrrr"/>
</appSettings>

1) 准确执行此操作的程序是什么?我认为在调试发布时,这些设置会根据我在Visual Studio 运行中的选择调试或发布自动使用并发布对话框。是真的吗?

2) 在移动到 Web.Debug.config 和 Web.Release.config 之后,我是否应该从 Web.config 中删除这些设置?

3) VS 中发布对话框的配置字段中的测试选择是什么?

如有任何帮助,我们将不胜感激。

我建议阅读 web.config 转换工作原理的概述:

https://blog.elmah.io/web-config-transformations-the-definitive-syntax-guide/

通常,Web.*.config 文件会根据 Visual Studio 中选择的发布配置对 Web.config 文件进行更改。例如,如果您想要 update/replace 调试发布中的值,您的 Web.Debug.config 文件应如下所示:

<configuration xmlns:xdt="...">
  <appSettings>
    <add key"ClientId" value="ddddd" xdt:Transform="SetAttributes" xdt:Locator="Match(key)" />
    <add key"ClientSecret" value="ddddd" xdt:Transform="SetAttributes" xdt:Locator="Match(key)" />
  </appSettings>
</configuration>

以下是有关这些工作原理的当前 Microsoft 文档: https://docs.microsoft.com/en-us/aspnet/core/host-and-deploy/iis/transform-webconfig?view=aspnetcore-3.1