在团队开发中比较常见,在开源项目中更加常见的一个场景,就是开发者需要为同一个项目设置不同的环境。
- 不同的连接串
- 特定文件夹或者配置文件的不同的路径
- 对于某些 WebService 的不同地址
- 不同的 SMTP 服务器
- 等等
最好的方案就是允许用户能够在不修改主配置文件 web.config 的情况下,设置自己特定的设置。
.NET 1.1
在 .NET 1.1 下,所有自定义的配置都在 appSettings 配置节中,可以比较简单的增加一个 file 的属性指向用户的配置文件,如果提供了这个文件,从这个配置文件中读取配置信息,如果没有,从 web.config 中读取即可。
.NET 2.0
不幸的是,在 .NET 2.0 下,在 web.config 中的许多设置被打破了,除了 appSettings 所有的配置节都不再有 file 属性了。所以你不能使用 .NET 1.1 的方法了。
所有的配置节都有一个 configSource 的属性,但是它的工作与 file 不同。file 属性指向的文件将会覆盖主配置文件 web.config 的设置,但是,configSource 属性指向的文件却用来扩展配置参数。
所以,现在你可以这样使用一个用户的配置文件来配置连接串。
在主配置文件 web.config 中
1 <connectionStrings configSource="user.config" />
在 user.config 中
1 <connectionStrings>
2 <add name="subtextData"
3 connectionString="Server=localhost;Database=SubtextData;Trusted_Connection=True;"
4 />
5 </connectionStrings>
2 <add name="subtextData"
3 connectionString="Server=localhost;Database=SubtextData;Trusted_Connection=True;"
4 />
5 </connectionStrings>