C# 如何在c中配置App.config文件
我使用的是Visual Studio 2005,我用App.config文件创建了一个应用程序。 当我尝试编辑App.config文件并向其添加新值时,会显示一个错误,请帮助我 我的app.config文件包含:C# 如何在c中配置App.config文件,c#,configuration,custom-configuration,C#,Configuration,Custom Configuration,我使用的是Visual Studio 2005,我用App.config文件创建了一个应用程序。 当我尝试编辑App.config文件并向其添加新值时,会显示一个错误,请帮助我 我的app.config文件包含: <?xml version="1.0" encoding="utf-8" ?> <configuration> <appSettings> <add key="keyvalue" value="value"/> <
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<appSettings>
<add key="keyvalue" value="value"/>
<add key="keyvalue1" value="value1"/>
</appSettings>
<mySettings>
<add name="myname" myvalue="value1"/>
</mySettings>
</configuration>
不要创建MySettings组。将所需内容放入AppSettings组 您可以创建一个mySettings组,但如果您确实包含自定义的非标准配置节,则必须在configSections元素中声明它们,如所述或所示
但是,我会质疑这是否真的有必要,并继续我的第一个答案,除非有很好的理由添加自定义部分,因为遵循正常标准更好。这只会让未来的维护程序员更轻松。您正在定义一个新的部分,它不是普通配置文件的一部分:
<mySettings>
<add name="myname" myvalue="value1"/>
</mySettings>
要合并你自己的部分,你需要写一些东西来阅读你的特定部分。然后添加对要处理该节的处理程序的引用,如下所示:
<configuration>
<configSections>
<section name="mySettings" type="MyAssembly.MySettingsConfigurationHander, MyAssembly"/>
</configSections>
<!-- Same as before -->
</configuration>
示例代码示例如下:
public class MySettingsSection
{
public IEnumerable<MySetting> MySettings { get;set; }
}
public class MySetting
{
public string Name { get;set; }
public string MyValue { get;set; }
}
public class MySettingsConfigurationHander : IConfigurationSectionHandler
{
public object Create(XmlNode startNode)
{
var mySettingsSection = new MySettingsSection();
mySettingsSection.MySettings = (from node in startNode.Descendents()
select new MySetting
{
Name = node.Attribute("name"),
MyValue = node.Attribute("myValue")
}).ToList();
return mySettingsSection;
}
}
public class Program
{
public static void Main()
{
var section = ConfigurationManager.GetSection("mySettings") as MySettingsSection;
Console.WriteLine("Here are the settings for 'MySettings' :");
foreach(var setting in section.MySettings)
{
Console.WriteLine("Name: {0}, MyValue: {1}", setting.Name, setting.MyValue);
}
}
}
还有其他读取配置文件的方法,但这是徒手输入最简单的方法。请注意,这些“错误”只是信息性消息。VisualStudio只是让您知道,它无法确定这些值是否应该是元素、属性以及应该存储的类型。忽略这些是安全的,但提供的答案提供了如何实现读取这些自定义值的指导。
public class MySettingsSection
{
public IEnumerable<MySetting> MySettings { get;set; }
}
public class MySetting
{
public string Name { get;set; }
public string MyValue { get;set; }
}
public class MySettingsConfigurationHander : IConfigurationSectionHandler
{
public object Create(XmlNode startNode)
{
var mySettingsSection = new MySettingsSection();
mySettingsSection.MySettings = (from node in startNode.Descendents()
select new MySetting
{
Name = node.Attribute("name"),
MyValue = node.Attribute("myValue")
}).ToList();
return mySettingsSection;
}
}
public class Program
{
public static void Main()
{
var section = ConfigurationManager.GetSection("mySettings") as MySettingsSection;
Console.WriteLine("Here are the settings for 'MySettings' :");
foreach(var setting in section.MySettings)
{
Console.WriteLine("Name: {0}, MyValue: {1}", setting.Name, setting.MyValue);
}
}
}