我在Visual Studio解决方案中有多个项目,并且我有一些项目特定的设置和其他全局设置。配置文件明智我想完成以下任务:
我的计划是使用<appSettings file="...">
中文件属性的功能在每个项目和全局设置中合并,如下所示:
WebProject1&#39; web.config
:
<appSettings file="WebProject1.config">
<add key="WebProject1Setting1" value="WebProject 1 Setting 1" />
</appSettings>
WebProject1.config
:
<appSettings file="Global.config">
<add key="WebProject1Secret1" value="WebProject 1 Secret 1" />
</appSettings>
Global.config
:
<appSettings>
<add key="GlobalSetting1" value="Global setting 1" />
</appSettings>
然而显然只有 顶级web.config
可以包含另一个配置文件,因为我在构建时遇到以下错误:
无法识别的属性&#39;文件&#39;。请注意,属性名称是 区分大小写的。
来源错误:
我的目标是定义Global.config
中所有项目共有的设置,然后在顶级web.config
文件以及包含的配置文件中定义项目特定的设置,例如{ {1}}。
有什么建议吗?
答案 0 :(得分:3)
您无法嵌套包含配置文件。即。一个web / app.config appsetting包括另一个设置文件,该文件又包含另一个设置文件,依此类推。 appsetting上的文件属性仅适用于主web / app.config文件。
要实现您的目标,您可以在每个项目的web.config文件中使用单独的部分进行密码设置。
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<section name="SecretSettings"
type="System.Configuration.NameValueFileSectionHandler, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"></section>
</configSections>
<SecretSettings configSource="secretsettings.config"></SecretSettings>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" />
</startup>
<appSettings>
</appSettings>
</configuration>
现在从
等程序访问您的设置var secretSettings =(NameValueCollection)ConfigurationManager.GetSection("SecretSettings");
确保将文件secretsettings.config设置为始终复制到其属性中的输出文件夹。