Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 读取编译后手动添加到app.config的设置_C#_.net_App Config_Application Settings - Fatal编程技术网

C# 读取编译后手动添加到app.config的设置

C# 读取编译后手动添加到app.config的设置,c#,.net,app-config,application-settings,C#,.net,App Config,Application Settings,我开发了一个Windows服务。它使用一个MyService.exe.config文件进行配置,该文件看起来很简单,只有一个设置Prop1: 现在,如果我启动该服务,请执行以下代码行: log.Debug(Properties.Settings.Default["Prop1"].ToString()); log.Debug(Properties.Settings.Default["Prop2"].ToString()); 产生以下输出: Foo Impossibile trovare la p

我开发了一个Windows服务。它使用一个MyService.exe.config文件进行配置,该文件看起来很简单,只有一个设置Prop1:

现在,如果我启动该服务,请执行以下代码行:

log.Debug(Properties.Settings.Default["Prop1"].ToString());
log.Debug(Properties.Settings.Default["Prop2"].ToString());
产生以下输出:

Foo
Impossibile trovare la proprietà di impostazione 'Prop2'.
   in System.Configuration.SettingsBase.GetPropertyValueByName(String propertyName)
   in System.Configuration.SettingsBase.get_Item(String propertyName)
   in System.Configuration.ApplicationSettingsBase.GetPropertyValue(String propertyName)
   in System.Configuration.ApplicationSettingsBase.get_Item(String propertyName)
   in ...
意大利语中的错误表示找不到设置属性“Prop2”

如何读取编译后添加到app.config的设置


我想知道,当应用程序已经部署时,是否不可能向app.config添加新设置,因为每个设置都必须在Properties.settings.Default中编译并静态可用。所以为了达到我想要的效果,我应该使用一个由我管理的设置文件,比如重新发明轮子吗?

好吧,我发布了一个我认为可行的想法,但我回去测试了自己,结果没有。D***

所以这里有一个建议,当常规设置不起作用时,我会使用它

创建一个结构化为数据集的XML文件最简单的方法是编写一个简短的程序,创建一个数据集,填充它,并将其保存为XML

DataSet mydataset = new DataSet("myDataSet");
DataTable mydatatable = new DataTable("myDataTable");
mydatatable.Columns.Add(new DataColumn("myColumn1"));
DataRow newrow = mydatatable.NewRow();
newrow["myColumn1"] = "somedata";
mydatatable.Rows.Add(newrow);
mydataset.Tables.Add(mydatatable);
mydataset.WriteXML(@"C:\mydataset.xml", XmlWriteMode.WriteSchema);
这将创建基本的XML文件

非常重要!!!!!要序列化数据集和/或数据表,必须在创建它们时为它们命名:

new DataSet("mydataset")
然后,只要不破坏XML结构的完整性,就可以随时使用喜爱的文本编辑器向XML文件添加行甚至列

在您的应用程序中,您只需将XML文件读回一个数据集中,并遍历您的数据表行和每个数据表(如果您创建了多个数据表并进行了相应的处理)

DataSet myDataSet = new DataSet("mydataset");
myDataSet.ReadXml(@"C:\mydataset.xml")
foreach (DataTable t in myDataSet.Tables)
{
    foreach (DataRow r in t.Rows)
    {
        //process here
    }            
}
非常重要!!!!!要处理数据,必须使用XML文件中DataSet和DataTable的名称

希望这有帮助。当我无法使用或无法访问内置设置处理程序时,它已经为我工作了很多次。它确实为您的编码增加了一点时间,但是


约翰

你更改了什么配置?根目录还是bin文件夹中的?我不知道你的意思。我更改了MyService.exe.config,它与MyService.exe位于同一文件夹中。这应该比。。。配置更改后是否重新启动了服务?是的,我在服务停止后编辑了它,然后启动了它。我假设您知道要添加哪些配置选项?
new DataSet("mydataset")
DataSet myDataSet = new DataSet("mydataset");
myDataSet.ReadXml(@"C:\mydataset.xml")
foreach (DataTable t in myDataSet.Tables)
{
    foreach (DataRow r in t.Rows)
    {
        //process here
    }            
}