在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文件。