Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.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# 是否将条目写入锁定的设置文件?_C#_Settings - Fatal编程技术网

C# 是否将条目写入锁定的设置文件?

C# 是否将条目写入锁定的设置文件?,c#,settings,C#,Settings,我有下面的代码,它应该获取当前的配置文件,向其中添加一个条目,然后写回该文件。但是,由于文件被锁定,这不起作用,请参见堆栈跟踪。在执行此操作之前,是否有办法释放它?或者我可以用另一种方式吗 代码: 错误: 我还尝试使用以下命令手动修改exe配置: System.Configuration.Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.PerUserRoaming);

我有下面的代码,它应该获取当前的配置文件,向其中添加一个条目,然后写回该文件。但是,由于文件被锁定,这不起作用,请参见堆栈跟踪。在执行此操作之前,是否有办法释放它?或者我可以用另一种方式吗

代码:

错误:

我还尝试使用以下命令手动修改exe配置:

System.Configuration.Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.PerUserRoaming); // Add an Application Setting.
XmlDocument doc = new XmlDocument();
doc.Load(@config.FilePath);
ConfigurationSection settings = config.GetSection("EmailParserWinService.Settings");
settings.SectionInformation.AllowExeDefinition = ConfigurationAllowExeDefinition.MachineToLocalUser;
config.Sections.Add("GENERAL_USER_SETTINGS", settings);
config.Save();
然而,这造成了一个问题,因为它似乎不存在的位置

System.Xml.dll中出现“System.IO.DirectoryNotFoundException”

更新:

我现在使用的是:

System.Configuration.Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.PerUserRoaming); // Add an Application Setting.
XmlDocument doc = new XmlDocument();
doc.Load(@config.FilePath);
ConfigurationSection settings = config.GetSection("EmailParserWinService.Settings");
settings.SectionInformation.AllowExeDefinition = ConfigurationAllowExeDefinition.MachineToLocalUser;
config.Sections.Add("GENERAL_USER_SETTINGS", settings);
config.Save();
但它在某种程度上是一个空引用。具体而言,这一行: settings.SectionInformation.AllowExeDefinition=ConfigurationLowexeDefinition.MachineToLocalUser


不知为什么,我的设置变量,即使我在上面定义了它?他回来了。我认为问题在于我没有提取正确的代码段。其中哪一部分包含设置

    [0] "system.data.dataset"   object {string}
    [1] "mscorlib"  object {string}
    [2] "system.data.sqlclient" object {string}
    [3] "connectionStrings" object {string}
    [4] "system.webServer"  object {string}
    [5] "appSettings"   object {string}
    [6] "startup"   object {string}
    [7] "runtime"   object {string}
    [8] "system.data.odbc"  object {string}
    [9] "system.data"   object {string}
    [10]    "configProtectedData"   object {string}
    [11]    "system.codedom"    object {string}
    [12]    "uri"   object {string}
    [13]    "system.runtime.remoting"   object {string}
    [14]    "satelliteassemblies"   object {string}
    [15]    "system.data.oledb" object {string}
    [16]    "assemblyBinding"   object {string}
    [17]    "system.data.oracleclient"  object {string}
    [18]    "system.windows.forms"  object {string}
    [19]    "system.diagnostics"    object {string}
    [20]    "windows"   object {string}

?谢谢你的评论。好的,通过它,它是有意义的。但是,您知道我必须添加什么引用才能使用UserSettings吗?对不起,不知道。对于从某个.Net类派生的类,它可能不是.Net类名,而是任意用户名。它可以是从ConfigurationSection派生的用户定义类吗?这使得显示的代码可编译。尽管我在上面定义了设置变量,但我的设置变量是多少?他回来了。