我们可以在.NET控制台应用程序中拥有多个App.Config文件吗?

Rit*_*ita 9 .net c# app-config web-config c#-4.0

我有一个具有App.Confile文件的控制台应用程序.现在,此处维护特定于环境的参数.

现在我想有多个app.config文件(比如app.dev.config,app.test.config和app.prod.config)我们如何拥有多个Web.Config文件.

在Web应用程序的情况下,我们可以处理这个,ConfigurationManager将选择相应的Web.Config文件.

如果是控制台应用程序,我不确定.如果是,我们如何拥有多个app.config文件?

感谢您的帮助.

谢谢

Mat*_*ott 10

要继续Babak的回答,您还可以通过configSource在代表a的任何元素上使用属性,将配置的各个部分分成其他配置文件ConfigurationSection,例如:

<appSettings configSource="appSettings.config" />
Run Code Online (Sandbox Code Playgroud)

appSettings.config中:

<?xml version="1.0" encoding="UTF-8"?>
<appSettings>
    <add key="Blah" value="Nim nim nim" />
</appSettings>
Run Code Online (Sandbox Code Playgroud)

  • 似乎不适用于runtime/assemblyBinding ......可悲的是. (2认同)

Bab*_*fas 8

UPDATE

使用Visual Studio 20102012,您已将其全部集成到IDE中.如果右键单击配置文件,VS会为您提供为每个构建配置生成转换配置的选项.如果要为每个环境创建构建配置,MSBuild将自动为您生成正确的Web.config/app.config.

简短的回答,是的.您可以在构建脚本中拥有不同的文件,但是您必须将正确的文件重命名为"App.config"并进行设置(在编译之前).

答案很长,您应该使用的是Enterprise Library MergeConfiguration工具.这允许您使用现有的App.config作为基础并定义每个环境的增量.该工具将合并基础和增量以生成环境特定的配置文件.在构建脚本中仍然需要一些逻辑来应用正确的配置文件.

在计算机上安装Enterprise Library时,可以右键单击Visual Studio中的配置文件,然后通过配置工具进行编辑.您可以使用它来定义您的环境以及应用程序设置和连接字符串以覆盖每个环境.

http://entlib.codeplex.com/

  • 这有效。我已将副本 $(ProjectDir)app.$(ConfigurationName).config $(ProjectDir)app.config 放入构建命令中。 (2认同)