在Windows Forms C#应用程序中获取配置文件的最简单方法
-
02-07-2019 - |
题
我是.NET的新手,我仍然没有了解配置文件的工作方式。
每次我在google上搜索它时都会收到有关web.config的结果,但我正在编写一个Windows窗体应用程序。
我发现我需要使用System.Configuration命名空间,但文档没有帮助。
如何定义我的配置文件是XYZ.xml?或者它有一个<!> quot; default <!> quot;配置文件的名称?我仍然没有那样做。
另外,如何定义新的部分,我真的需要创建一个继承自ConfigurationSection的类吗?
我想要一个包含这样的值的配置文件:
<MyCustomValue>1</MyCustomValue>
<MyCustomPath>C:\Some\Path\Here</MyCustomPath>
有一种简单的方法吗?您能以简单的方式解释如何从/向简单的配置文件进行读写吗?
解决方案
您想要使用App.Config。
当您向项目添加新项目时,会出现名为“应用程序配置”文件的内容。添加它。
然后在配置/ appsettings部分添加密钥
像:
<configuration>
<appSettings>
<add key="MyKey" value="false"/>
通过执行
访问成员System.Configuration.ConfigurationSettings.AppSettings["MyKey"];
这适用于.net 2及以上版本。
其他提示
澄清以前的答案......
1)向项目添加新文件(添加 - <!> gt;新项目 - <!> gt;应用程序配置文件)
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)构建时,输出文件夹将包含一个名为<!> lt; assemblyname <!> gt; .exe.config的文件。这将是App.Config文件的副本。开发人员不需要进一步的工作来创建这个文件。
从快速阅读前面的答案,它们看起来是正确的,但它看起来并不像任何人提到VS 2008中的新配置工具。它仍然使用app.config(在编译时复制到YourAppName.exe.config ),但有一个UI小部件来设置属性和指定其类型。双击项目的<!>“属性<!>”中的Settings.settings;文件夹中。
最好的部分是从代码访问此属性是类型安全 - 编译器将捕获明显的错误,如错误输入属性名称。例如,app.config中名为MyConnectionString的属性将被访问为:
string s = Properties.Settings.Default.MyConnectionString;
您应该创建一个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;
}
请注意,根据Microsoft ,您应该使用ConfigurationManager而不是ConfigurationSettings。 (见备注部分) <!> quot; ConfigurationSettings类仅提供向后兼容性。对于新应用程序,您应该使用ConfigurationManager类或WebConfigurationManager类。 QUOT <!>;
配置文件的默认名称是[yourexe] .exe.config。因此,notepad.exe将在程序所在的文件夹中有一个名为notepad.exe.config的配置文件。这是CLR和Framework所有方面的常规配置文件,但可以在<appSettings>
节点下包含您自己的设置。
System.Configuration.ConfigurationSettings.AppSettings
元素创建一组名称 - 值对,可以作为IConfigurationSectionHandler
访问。但是,无法将更改保存回配置文件。
还可以将自己的自定义元素添加到配置文件中 - 例如,定义结构化设置 - 通过创建实现<configSections>
并将其添加到配置文件的ConfigurationSettings.GetConfig
元素的类。然后,您可以通过调用System.Configuration.ConfigurationManager
来访问它。
.NET 2.0添加了一个新类App.config
,它支持多个文件,每个用户覆盖每个系统数据。它还支持将修改后的配置保存回设置文件。
Visual Studio创建一个名为<=>的文件,在构建项目时,该文件将使用正确的名称复制到EXE文件夹。
有关.NET应用程序配置的最佳(恕我直言)文章在CodeProject上揭开神秘面纱.NET 2.0配置。我下一篇关于.net配置文件中的部分的最喜欢(较短)的文章是了解部分处理程序 - 应用程序.config文件。
在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;
}
}
}
我同意其他指向app.config的答案。但是,您应该创建一个实用程序类(AppSettings是我使用的名称)来读取它们并将它们作为属性公开,而不是直接从app.config中读取值。 AppSettings类可用于聚合来自多个商店的设置,例如来自app.config的值和来自程序集的应用程序版本信息(AssemblyVersion和AssemblyFileVersion)。
一种非常简单的方法是使用您的您自己的自定义<代码>设置类。
您使用的是什么版本的.Net和VS?
创建新项目时,您的解决方案中应该有一个名为app.config的文件,即默认配置文件。