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

11

我有一个控制台应用程序,其中有一个App.Config文件。现在,特定于环境的参数都在这里维护。

现在我考虑拥有多个app.config文件(例如app.dev.config、app.test.config和app.prod.config),就像我们可以拥有多个Web.Config文件一样。

对于Web应用程序,我们可以处理这个问题,并且ConfigurationManager会选择相应的Web.Config文件。

对于控制台应用程序,我不确定。如果可以,我们如何使用多个app.config文件?

感谢您的帮助。

谢谢。

2个回答

11

继Babak的回答之后,您还可以通过在任何表示ConfigurationSection的元素上使用configSource属性,将配置的部分内容分离到其他配置文件中,例如:

<appSettings configSource="appSettings.config" />

appSettings.config 中:

<?xml version="1.0" encoding="UTF-8"?>
<appSettings>
    <add key="Blah" value="Nim nim nim" />
</appSettings>

这个能处理连接字符串条目吗? - Babak Naffas
你可以这样做:<connectionStrings configSource="connectionStrings.config" /> - Matthew Abbott

9

更新

使用 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/


2
这个可行。我已经将复制 $(ProjectDir)app.$(ConfigurationName).config $(ProjectDir)app.config 放在构建命令中。 - Rita

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接