如何使用依赖于环境的app.config文件

时间:2015-05-18 10:21:32

标签: c# .net app-config

我们是一群在同一个应用程序上工作的C#/ .NET 4.5开发人员。

应用程序具有一组与每个开发人员计算机相关的配置,例如与数据库的连接字符串,网络相关设置(代理,IP,凭据)以及更多。

由于应用程序已经增长,我们遇到了许多与环境相关的配置,例如:

  • 如果这是MyPC,则为我的PC加载连接字符串。
  • 如果这是XDeveloperPC,则指定代理的设置。

此外,如果新开发人员离开或加入该组,则更新文件的过程将变成一个完全头痛的过程。维护文件变得非常困难,可能是错误和错误的来源。

我在考虑使用与每个开发人员环境相关的特定app.config文件,例如:

  • app_MyPC.config
  • app_XDeveloperPC.config

当应用程序构建或执行时,然后指定要加载哪个应用程序的默认app.config。然后,当应用程序或任何类或方法引用给定配置(如连接字符串)时,访问此配置文件就像访问app.config默认文件一样。

我不想创建一个在应用程序启动时立即构建的Configuration类,因为那时我应该从每个地方到这个类的引用,并且应用程序非常大,有一堆项目和dll。 我更愿意听取一些意见,你认为应该是实现这一目标的最佳途径。

有可能实现这一目标吗? 怎么样? 你知道更好的方法吗?

3 个答案:

答案 0 :(得分:0)

仅供参考,请注意.NET仅为整个应用程序加载一个配置文件。您可以尝试多个配置文件,如此处指定的那样,

Multiple App.Config Files in .NET Class library project

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

答案 1 :(得分:0)

您可以指定要从其他文件加载的app.config部分。 See this answer

但是,您可能必须自定义上述解决方案,app.config文件以及组织配置的方式。

另一种方法是使用自定义设置文件而不是app.config。这将需要一些代码更改才能使用配置文件。此配置可以是XML或JSON文件(JSON很容易处理)。您可以使用继承模型,其中通用设置来自一个文件,特定设置来自另一个文件,依此类推。此外,您可以在运行时从此类文件加载设置并动态更改应用程序行为。

如果您决定使用自定义配置文件,并且考虑到App.config文件已经编写了大量代码,则可以将app.config调用抽象为方法,并让该方法处理提取设置值的位置从。这样,您可以最大限度地减少代码更改并保持整洁。

答案 2 :(得分:-2)

也许你可以使用machine.config文件(C:\ Windows \ Microsoft.NET \ Framework \ your Framework version \ Config \ machine.config)