如何跨多个 Visual Studio 项目实施每个项目的 appSettings 和全局 appSettings?
How can I implement per-project appSettings and global appSettings across multiple Visual Studio projects?
我在一个 Visual Studio 解决方案中有多个项目,我有一些设置是特定于项目的,其他设置是全局的。配置文件明智我想完成以下内容:
- 能够通过外部化全局设置文件在所有项目中重复使用 common/global 设置
- 具有项目特定的配置设置(没有问题)
- 具有项目特定的配置机密,这些机密被外化到单独的文件中并在工作目录之外
我的计划是使用 <appSettings file="...">
中文件属性的能力来合并每个项目和全局设置,如下所示:
WebProject1 的 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
可以包含另一个配置文件,因为我在构建时遇到以下错误:
Unrecognized attribute 'file'. Note that attribute names are
case-sensitive.
Source Error:
我的 objective 是定义 Global.config
中所有项目通用的设置,然后在顶级 web.config
文件以及包含的配置文件,如 WebProject1.config
.
有什么建议吗?
您不能嵌套包含配置文件。 IE。 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 在其属性中设置为始终复制到输出文件夹。
我在一个 Visual Studio 解决方案中有多个项目,我有一些设置是特定于项目的,其他设置是全局的。配置文件明智我想完成以下内容:
- 能够通过外部化全局设置文件在所有项目中重复使用 common/global 设置
- 具有项目特定的配置设置(没有问题)
- 具有项目特定的配置机密,这些机密被外化到单独的文件中并在工作目录之外
我的计划是使用 <appSettings file="...">
中文件属性的能力来合并每个项目和全局设置,如下所示:
WebProject1 的 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
可以包含另一个配置文件,因为我在构建时遇到以下错误:
Unrecognized attribute 'file'. Note that attribute names are case-sensitive.
Source Error:
我的 objective 是定义 Global.config
中所有项目通用的设置,然后在顶级 web.config
文件以及包含的配置文件,如 WebProject1.config
.
有什么建议吗?
您不能嵌套包含配置文件。 IE。 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 在其属性中设置为始终复制到输出文件夹。