我的.NET应用程序何时/如何使用其App.Config文件?

时间:2011-12-31 10:46:18

标签: c# .net vb.net app-config

我以前从未想过这件事;但我最近学会了如何修改app.config文件以添加/删除跟踪侦听器(例如,将所有Trace.WriteLine输出重定向到文本文件)。

但我不太明白它是如何运作的?有人可以解释一下吗?

我知道相应的C#代码与配置相同(在本例中) - 该代码是否在我的应用程序入口点之前生成/执行?

3 个答案:

答案 0 :(得分:8)

  

是否在我的应用程序入口点之前生成/执行了该代码?

将配置文件视为标准文本文件。如果您的应用程序代码没有阅读并对其执行任何操作,则不会发生任何事情。所以基本上当你在app.config文件中定义一些部分时,你的应用程序中有一些代码(在BCL或自定义中),在某些时候会读取,解析和解释这些值。

所以,让我们考虑跟踪侦听器的示例。当您尝试在代码中跟踪某些内容时,底层Trace类将使用配置系统来检查您在app.config中定义的值。此配置系统仅解析XML一次,并将其作为单例存储在内存中,以避免每次开销。因此,它只是您第一次尝试跟踪配置文件被解析的内容,并且在后续调用中,这些值直接从内存中读取。

答案 1 :(得分:5)

每次启动时,应用程序都会查看app.config字段。

您可以将任何设置存储在app.config文件中,动态添加或删除。

你去......

<appSettings>
    <add key="HospitalName" value="HML Hospital" />
    <add key="HospitalAddress" value="Madurai" />
    <add key="ServerName" value="SMSERVER" />
    <add key="DatabaseName" value="HospiCare" />
    <add key="DBUserID" value="sa" />    
    <add key="Theme" value ="Blue"/>
</appSettings>

然后你可以改变如下

使用命名空间

using System.Configuration;

将您的配置文件读为

string theme=ConfigurationManager.AppSettings("Theme");

并使用此

进行修改
Configuration configFile = ConfigurationManager.OpenExeConfiguration(System.IO.Path.GetFileName(Application.ExecutablePath));
configFile.AppSettings.Settings(KeyName).Value = KeyValue;
configFile.Save();

如果找到你的anser

,请接受并投票

答案 2 :(得分:3)

正如其他人已经解释的那样。我希望能更深入地解释一下。

在.NET中,您的CLR为您的应用程序创建虚拟边界。换句话说,当您的应用程序在CLR中托管时,它会为您的应用程序创建一个虚拟维度。它叫做AppDomain或Application Domain。 这是您的应用程序读取App.Config文件以获取任何信息的阶段。因为有时你的App.Config会告诉CLR它应该寻找什么样的运行时程序集ex:CLR 2.0程序集如果你在VS2010 for 2.0中构建应用程序或者首先创建4项目然后切换到2.0目标,通常会看到这种情况。