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

Posted

技术标签:

【中文标题】我们可以在 .NET 控制台应用程序中有多个 App.Config 文件吗?【英文标题】:Can we have multiple App.Config files in .NET console application? 【发布时间】:2011-05-26 17:39:23 【问题描述】:

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

现在我正在考虑以 多个 app.config 文件(如 app.dev.config、app.test.config 和 app.prod.config)的方式我们如何拥有多个 Web.Config 文件。

如果是 Web 应用程序,我们可以处理这个问题,ConfigurationManager 会选择相应的 Web.Config 文件。

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

感谢您的帮助。

谢谢

【问题讨论】:

【参考方案1】:

更新

使用 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】:

要继续 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>

【讨论】:

这会处理连接字符串条目吗? 你可以这样做:&lt;connectionStrings configSource="connectionStrings.config" /&gt;

以上是关于我们可以在 .NET 控制台应用程序中有多个 App.Config 文件吗?的主要内容,如果未能解决你的问题,请参考以下文章

我们可以在控制台应用程序中有一个 app_code 文件夹吗?

ASP.NET MVC:让 AP​​I 控制器操作返回 View 和/或 JSON 是不是是一种好习惯

asp.net 多个 url 指向同一个控制器

.NET 6 新特性 Parallel ForEachAsync

我们可以在 react redux 中有多个商店吗

核心数据迁移 - 我们可以在 xcode 中有多个 .xcmapingmodel 文件吗?