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

我对.NET真的很陌生,但我仍然没有弄清楚configuration文件是如何工作的。

每次我search谷歌关于它,我得到了关于web.config的结果,但我正在写一个Windows窗体应用程序。

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

我如何定义我的configuration文件是XYZ.xml? 或者它有configuration文件的“默认”名称? 我仍然没有得到。

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

我想只是有一个像这样的值的configuration文件:

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

有一个简单的方法来做到这一点? 你能简单地解释一下如何读写一个简单的configuration文件吗?

你想使用一个App.Config。

将新项目添加到项目时,会有一些称为“应用程序configuration文件”的应用程序。 添加。

然后你在configuration/ appsettings部分添加键

喜欢:

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

通过做访问的成员

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

这在.net 2及以上版本中起作用。

澄清以前的答案…

1)添加一个新的文件到你的项目(Add-> New Item-> Application Configuration File)

2)新的configuration文件将作为App.Config出现在解决scheme资源pipe理器中。

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)构build时,输出文件夹将包含一个名为<assemblyname> .exe.config的文件。这将是App.Config文件的副本。 开发人员不需要进一步的工作来创build这个文件。

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

最好的部分是,从代码中访问这个属性是types安全的 – 编译器会捕获明显的错误,如错误的属性名称。 例如,app.config中名为MyConnectionString的属性将被访问如下:

 string s = Properties.Settings.Default.MyConnectionString; 

configuration文件的默认名称是[yourexe] .exe.config。 所以notepad.exe将有一个名为notepad.exe.config的configuration文件,与程序位于同一个文件夹中。 这是CLR和Framework所有方面的通用configuration文件,但可以在<appSettings>节点下包含您自己的设置。

<appSettings>元素创build一个可以作为System.Configuration.ConfigurationSettings.AppSettings访问的名称 – 值对的集合。 但是,无法将更改保存回configuration文件。

也可以将自己的自定义元素添加到configuration文件中(例如,定义结构化设置),方法是创build一个实现IConfigurationSectionHandler的类并将其添加到configuration文件的<configSections>元素中。 然后可以通过调用ConfigurationSettings.GetConfig来访问它。

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

Visual Studio将创build一个名为App.config的文件,该文件在生成项目时以正确的名称复制到EXE文件夹中。

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

你应该右键点击你的项目,添加新的项目,新的“应用程序configuration文件”。

确保您使用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; } 

根据微软的说法 ,你应该使用ConfigurationManager而不是ConfigurationSettings。 (请参阅备注部分)“ConfigurationSettings类仅提供向后兼容性,对于新的应用程序,您应该使用ConfigurationManager类或WebConfigurationManager类。”

最好的(恕我直言)关于.NET应用程序configuration的文章是在CodeProject 解开.NET 2.0configuration的奥秘 。 而我的下一个最喜欢(较短)的.netconfiguration文件中的部分文章是理解部分处理程序 – App.config文件 。

在Windows窗体中,您有一个app.config ,它非常类似于web.config 。 但由于我看到你需要的是自定义值,我build议使用设置。 要做到这一点,打开你的项目属性,然后进入设置。 如果设置文件不存在,您将有一个链接来创build一个。 然后,您可以将设置添加到您在该处看到的表格,这将生成适当的XML和可用于加载和保存设置的Settings类。 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; } } } 

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

这样做的一个非常简单的方法是使用您自己的自定义Settings类 。

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

AppSettings已被弃用,现在被认为是过时的。 [ 链接 ]

另外,app.config的appSettings部分已被applicationSettings部分取代。

正如别人提到的,你应该使用System.Configuration.ConfigurationManager [ 链接 ]这是新的.NET 2.0

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

在创build新项目时,应在解决scheme中有一个名为app.config的文件,即缺省configuration文件。