首页 文章

在Windows Forms C#应用程序中拥有配置文件的最简单方法

提问于
浏览
81

我是.NET的新手,我仍然没有了解配置文件的工作方式 .

每次我在google上搜索它时都会得到关于web.config的结果,但我正在编写一个Windows窗体应用程序 .

我发现我需要使用System.Configuration命名空间,但文档没有帮助 .

如何定义我的配置文件是XYZ.xml?或者它是否具有配置文件的“默认”名称?我仍然没有得到那个 .

另外,如何定义新的部分,我真的需要创建一个继承自ConfigurationSection的类吗?

我想要一个包含这样的值的配置文件:

<MyCustomValue>1</MyCustomValue>
<MyCustomPath>C:\Some\Path\Here</MyCustomPath>

有一个简单的方法吗?您能以简单的方式解释如何从/向简单的配置文件进行读写吗?

11 回答

  • 113

    我同意其他指向app.config的答案 . 但是,您应该创建一个实用程序类(AppSettings是我使用的名称)来读取它们并将它们作为属性公开,而不是直接从app.config中读取值 . AppSettings类可用于聚合来自多个商店的设置,例如来自app.config的值和来自程序集的应用程序版本信息(AssemblyVersion和AssemblyFileVersion) .

  • 63

    一个非常简单的方法是使用your own custom Settings class .

  • 1

    您想使用App.Config .

    向项目添加新项目时,会出现名为“应用程序配置文件”的内容 . 加上那个 .

    然后在配置/ appsettings部分添加密钥

    喜欢:

    <configuration>
     <appSettings>
      <add key="MyKey" value="false"/>
    

    通过这样做来访问成员

    System.Configuration.ConfigurationSettings.AppSettings["MyKey"];
    

    这适用于.net 2及以上版本 .

  • 2

    澄清以前的答案......

    1)向项目添加新文件(添加 - >新项目 - >应用程序配置文件)

    2)新的配置文件将作为App.Config出现在解决方案资源管理器中 .

    3)使用以下模板将您的设置添加到此文件中

    <configuration>
      <appSettings>
        <add key="setting1" value="key"/>
      </appSettings>
      <connectionStrings>
        <add name="prod" connectionString="YourConnectionString"/>
      </connectionStrings>
    </configuration>
    

    4)像这样检索它们:

    private void Form1_Load(object sender, EventArgs e)
    {
        string setting = ConfigurationManager.AppSettings["setting1"];
        string conn = ConfigurationManager.ConnectionStrings["prod"].ConnectionString;
    }
    

    5)构建时,输出文件夹将包含一个名为<assemblyname> .exe.config的文件 . 这将是App.Config文件的副本 . 开发人员不需要进一步的工作来创建此文件 .

  • 0

    从快速阅读以前的答案,它们看起来是正确的,但它看起来并不像任何人提到VS 2008中的新配置工具 . 它仍然使用app.config(在编译时复制到YourAppName.exe.config),但有一个UI小部件来设置属性并指定它们的类型 . 双击项目“属性”文件夹中的Settings.settings .

    最好的部分是从代码访问此属性是类型安全 - 编译器将捕获明显的错误,如错误输入属性名称 . 例如,app.config中名为MyConnectionString的属性将被访问为:

    string s = Properties.Settings.Default.MyConnectionString;
    
  • 2

    您应该创建一个App.config文件(非常类似于web.config)

    您应该右键单击您的项目,添加新项目,新的“应用程序配置文件” .

    确保使用System.Configuration添加到项目中 .

    然后您可以为其添加值

    <?xml version="1.0" encoding="utf-8" ?>
    <configuration>
      <appSettings>
        <add key="setting1" value="key"/>
      </appSettings>
      <connectionStrings>
        <add name="prod" connectionString="YourConnectionString"/>
      </connectionStrings>
    </configuration>
    

    private void Form1_Load(object sender, EventArgs e)
        {
            string setting = ConfigurationManager.AppSettings["setting1"];
            string conn = ConfigurationManager.ConnectionStrings["prod"].ConnectionString;
        }
    

    只需注意,according to Microsoft,您应该使用ConfigurationManager而不是ConfigurationSettings . (见备注部分)"The ConfigurationSettings class provides backward compatibility only. For new applications you should use the ConfigurationManager class or WebConfigurationManager class instead. "

  • 9

    配置文件的默认名称是[yourexe] .exe.config . 因此,notepad.exe将在程序所在的文件夹中有一个名为notepad.exe.config的配置文件 . 这是CLR和Framework的所有方面的常规配置文件,但可以在 <appSettings> 节点下包含您自己的设置 .

    <appSettings> 元素创建一组名称 - 值对,可以作为 System.Configuration.ConfigurationSettings.AppSettings 进行访问 . 但是,无法将更改保存回配置文件 .

    也可以将自己的自定义元素添加到配置文件中 - 例如,定义结构化设置 - 通过创建实现 IConfigurationSectionHandler 的类并将其添加到配置文件的 <configSections> 元素 . 然后,您可以通过调用 ConfigurationSettings.GetConfig 来访问它 .

    .NET 2.0添加了一个新类 System.Configuration.ConfigurationManager ,它支持多个文件,每个用户覆盖每个系统数据 . 它还支持将修改后的配置保存回设置文件 .

    Visual Studio创建一个名为 App.config 的文件,在构建项目时,该文件将使用正确的名称复制到EXE文件夹 .

  • 6

    关于.NET应用程序配置的最佳(IMHO)文章是在CodeProject Unraveling the Mysteries of .NET 2.0 Configuration上 . 我下一篇关于.net配置文件中的部分的最喜欢(较短)的文章是Understanding Section Handlers - App.config File .

  • 26

    在Windows窗体中,您有一个 app.config ,它与 web.config 非常相似 . 但是,由于我认为你需要它是自定义值,我建议使用设置 . 为此,请打开项目属性,然后转到设置 . 如果设置文件不存在,您将有一个链接来创建一个 . 然后,您可以将设置添加到您在那里看到的表,这将生成相应的XML和Settings类可用于加载和保存设置 . 设置类的名称类似于 DefaultNamespace.Properties.Settings . 然后,您可以使用类似于以下的代码:

    using DefaultNamespace.Properties;
    
    namespace DefaultNamespace {
        class Class {
            public int LoadMySettingValue() {
                return Settings.Default.MySettingValue;
            }
            public void SaveMySettingValue(int value) {
                Settings.Default.MySettingValue = value;
            }
        }
    }
    
  • 7

    System.Configuration.ConfigurationSettings.AppSettings [ “的myKey”];

    AppSettings已被弃用,现在已被淘汰 . [link]

    此外,app.config的appSettings部分已被applicationSettings部分替换 .

    正如其他人提到的,你应该使用System.Configuration.ConfigurationManager [link]这是.Net 2.0的新功能

  • 3

    您使用的是什么版本的.Net和VS?

    创建新项目时,应该在解决方案中有一个名为app.config的文件,即默认配置文件 .

相关问题