C#我们可以为项目提供多个.config文件吗?

时间:2010-04-30 21:01:34

标签: c# configuration

如果我们可以拥有多个.config文件,我们可以与其他项目共享一个配置文件,并将私有配置放入另一个项目。 Visual Studio 2008会被混淆吗?

6 个答案:

答案 0 :(得分:8)

不,除了具有特殊<appSettings>属性的file=节点以“累积”方式工作之外,所有配置部分都是单次事务 - 你拥有它,并且你有一个它完全 - 或者你什么都没有。

<appSettings file="common.appsettings.config">
   <add key="private1" value="value1" />
</appSettings>

这将读入common.appsettings.config文件的内容,并且正在从该外部配置文件中使用您自己配置中未被显式值覆盖的任何内容。

据我所知,您无法向现有配置部分添加其他“私人”信息。

答案 1 :(得分:2)

Visual Studio 2010支持多个.config文件。它是新的Web应用程序打包和部署系统的一个特性。我们现在可以为应用程序的每个配置创建单独的web.config文件。但是对于2008年,不支持多配置文件,您可以通过添加两个配置文件并在构建时重命名它来解决此问题

示例:

private.config public.config

on pre-msbuild事件合并这两个文件

重命名合并文件,应该是web.config或app.config

希望这会有所帮助......

取值

答案 2 :(得分:0)

虽然只有一个配置部分处理程序,但每个目录可以有多个Web配置。

答案 3 :(得分:0)

配置文件从一般到特定是分层的。层次结构中更下方的配置文件将覆盖先前的任何设置。因此,如果您的解决方案包含主web.config文件,则项目中的任何web.config文件都会覆盖它,并且是特定的,仅对这些项目可见。如果项目由多个文件夹组成,您也可以将web.config文件添加到每个文件夹中,同样使用不同的设置也可以覆盖上面设置的任何文件。但是我提醒过度设计这个,或者如果你在每个级别配置安全性,你可能会遇到某些属性值的漏洞或安全漏洞。

答案 4 :(得分:0)

理论上,您应该能够拥有多个.config个文件,其中一些文件将由多个项目共享。

这样做的一种方法是使用一些能够合并两个具有相同基本结构的XML文件的实用程序。然后,您可以添加调用此工具的预构建或后构建事件。然后,该工具将合并多个.config文件,并将生成的.config文件输出到项目的目标目录。

如果您不想依赖任何外部工具并完全在Visual Studio中完成此操作,您可能找不到任何实用的解决方案。

答案 5 :(得分:0)

每个配置部分都可以放在外部文件中,并通过configSource属性从主app.config / web.config中引用。但是,您必须为要编写的每个自定义部分/外部配置文件编写自定义部分处理程序,这可能会有点繁琐。此外,appSettings部分可以通过相同的机制进行外部化和引用。