什么是C#.NET中的App.config?

What is App.config in C#.NET? How to use it?

我在C.NET中完成了一个项目,我的数据库文件是Excel工作簿。由于连接字符串的位置在我的编码中是硬编码的,所以在我的系统中安装它没有问题,但对于其他系统则有问题。

在应用程序设置完成后,是否有方法提示用户设置一次路径?

我得到的答案是"使用app.config"…有人能告诉我这个app.config是什么以及如何在我的上下文中使用它吗?


最简单的是,app.config是一个XML文件,有许多预定义的配置节可用,并且支持自定义配置节。"配置部分"是一个XML片段,其模式用于存储某种类型的信息。

  • 概述(MSDN)
  • 连接字符串配置(msdn)

可以使用内置配置部分(如connectionStringsappSettings配置设置。您可以添加自己的自定义配置部分;这是一个高级主题,但对于构建强类型配置文件非常强大。

Web应用程序通常具有web.config,而Windows GUI/服务应用程序具有app.config文件。

应用程序级配置文件从全局配置文件继承设置,例如machine.config。

从app.config读取

连接字符串有一个可以使用的预定义架构。注意,这个小片段实际上是一个有效的app.config(或web.config)文件:

1
2
3
4
5
6
7
8
<?xml version="1.0"?>
<configuration>
    <connectionStrings>  
        <add name="MyKey"
             connectionString="Data Source=localhost;Initial Catalog=ABC;"
             providerName="System.Data.SqlClient"/>
    </connectionStrings>
</configuration>

一旦定义了app.config,就可以使用configurationManager类在代码中读取它。不要被冗长的msdn示例所吓倒;事实上这很简单。

1
string connectionString = ConfigurationManager.ConnectionStrings["MyKey"].ConnectionString;

正在写入app.config

经常更改*.config文件通常不是一个好主意,但听起来您只想执行一次性设置。

请参阅:在运行时更改连接字符串&reload app.config,它描述了如何在运行时更新*.config文件的connectionStrings部分。

请注意,理想情况下,您可以从一个简单的安装程序执行这样的配置更改。

运行时app.config的位置

问:假设我在app.config中手动更改了一些,保存它,然后关闭它。现在,当我转到我的bin文件夹并从这里启动.exe文件时,为什么它不反映应用的更改?

答:当您编译应用程序时,它的app.config会被复制到bin目录1,其名称与您的exe匹配。例如,如果您的exe名为"test.exe",则bin目录中应该有"text.exe.config"。您可以在不重新编译的情况下更改配置,但需要编辑编译时创建的配置文件,而不是原始app.config。

1:注意web.config文件不会被移动,而是在编译和部署时保持在同一位置。一个例外是当web.config被转换时。

网络核心

.NET核心引入了新的配置选项。*.config文件的工作方式似乎没有改变,但是开发人员可以自由选择新的、更灵活的配置范例。

  • ASP.NET核心中的配置
  • 基本.NET-在.NET核心中配置


简单地说,app.config是一种基于XML的文件格式,用于保存应用程序级配置。

例子:

1
2
3
4
5
6
<?xml version="1.0"?>
<configuration>
 
   
  </appSettings>
</configuration>

您可以使用ConfigurationManager访问配置,如下代码段所示:

1
2
var value = System.Configuration.ConfigurationManager.AppSettings["key"];
// value is now"test"

注:ConfigurationSettings是一种过时的检索配置信息的方法。

1
var value = System.Configuration.ConfigurationSettings.AppSettings["key"];


app.config是一个XML文件,用作应用程序的配置文件。换句话说,您可以在其中存储您可能想要更改的任何设置,而不必更改代码(并重新编译)。它通常用于存储连接字符串。

请参阅以下有关如何执行此操作的msdn文章:http://msdn.microsoft.com/en-us/library/ms254494(v=vs.80).aspx


只是想补充一下我在所有答案中遗漏的一些东西——即使你一知道这似乎是愚蠢和明显的:

该文件必须命名为"app.config"或"app.config",并且可以位于与例如program.cs相同级别的项目中。

我不知道其他位置是否可能,其他名称(如odp.net文档中建议的application.conf)对我来说不起作用。

我从Visual Studio代码开始,用"dotnet new"创建了一个新项目。在这种情况下没有创建配置文件,我确信还有其他情况。PPS。您可能需要添加一个nuget包才能读取配置文件,如果是.NET核心,它将是"dotnet添加包system.configuration.configurationmanager--版本4.5.0"。


您可以使用以下方式访问app.config中的密钥:

2

沿着这条线走