我知道这太旧了,甚至可能不适用于 .NET Core,但适用于来自 Google 并使用非 .NET Core json 配置文件的人。这是我通常做的...
我曾经configSources
将所有配置设置从web.config
. 这允许您通过提供相对位置来将特定的配置部分放到不同的文件中,例如,这是您configSource
在配置部分(在根web.config
文件中)声明 a 的方式...
<configuration>
<log4net configSource="Config\debug\log4net.config" />
<appSettings configSource="config\debug\settings.config" />
<connectionStrings configSource="config\debug\connections.config" />
...
</configuration>
您可以随意命名这些文件,只需确保指定的路径和文件存在于解决方案中。这是 settings.config 文件的样子...
<?xml version="1.0"?>
<appSettings>
<add key="webpages:Version" value="3.0.0.0" />
<add key="webpages:Enabled" value="false" />
<add key="ClientValidationEnabled" value="true" />
<add key="UnobtrusiveJavaScriptEnabled" value="true" />
<add key="foo" value="bar" />
</appSettings>
现在,相对路径是相对于项目根目录的...
在上图中你可以看到我为不同的部署环境提供了两种不同的路径,那是因为很明显我的连接字符串和设置在生产中是不同的。
然后您可以使用配置转换,以便应用程序可以使用正确的配置文件,无论它是处于调试模式还是发布模式......
这是Web.Debug.config
文件的样子...
<?xml version="1.0"?>
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
<log4net configSource="Config\debug\log4net.config" xdt:Transform="Replace" />
<appSettings configSource="config\debug\settings.config" xdt:Transform="Replace" />
<connectionStrings configSource="config\debug\connections.config" xdt:Transform="Replace" />
</configuration>
发布版本几乎相同...替换提供给 configSource 属性的路径。仅此而已。还有其他 web.config 元素支持 configSource 设置,例如许多system.serviceModel
子元素。