.Net 3.5 中的 Configuration.Save() 在部署/发布模式下不起作用

Posted

技术标签:

【中文标题】.Net 3.5 中的 Configuration.Save() 在部署/发布模式下不起作用【英文标题】:Configuration.Save() in .Net 3.5 does not work in Deploy/Release mode 【发布时间】:2009-10-05 04:45:25 【问题描述】:

正如 msdn 社交论坛上的建议, http://social.msdn.microsoft.com/Forums/en-US/netfxbcl/thread/ab59671a-f0a3-4182-ba5b-7fa17f0a6118?prof=required

我关闭了 Visual Studio 托管进程,并验证了当仍在调试配置下运行时更改已保存到 MyApp.exe.config 文件而不是 MyApp.vhost.exe.config 文件。但是,当我将具有 Release 配置的应用程序部署到 C:\UAT\MyApp\ 时,它不会将更改保存到 C:\UAT\MyApp\Application Files\MyAPP_1_0_0_0\MyApp.exe.config 文件。我检查了文件权限并确保未检查 MyApp.exe.config 文件的 ReadOnly。

另外,我也试过另存为(persist\MyApp_yyyymmdd.config)。在 Visual Studio 2008 中以调试模式运行时(虚拟主机已关闭),它会在 bin/Debug 下创建“persist”文件夹并将文件保存在那里。但是 C:\UAT\MyApp\ 中的部署版本不会创建这样的文件夹。我确保 C:\UAT 下的所有文件夹都没有设置为只读。

我正在使用 Visual Studio 2008。感谢任何帮助。

跟进: 在部署应用程序之前,我还确保从项目属性中将安全设置为“这是一个完全信任的应用程序”。

【问题讨论】:

【参考方案1】:

用户设置的值通常保存在用户个人资料中的"user.config" 中,尤其是对于已发布的应用程序。 exe.config 并不是真的打算在运行时进行编辑,因为它涉及到安装(受系统保护)与文档(用户)的问题,尤其是对于非管理员而言。

检查位置,例如:

用户配置文件\AppData\Localappname\appname.exe_gibberish\user.config

【讨论】:

嗨,马克,感谢您指出正确的方向。我发现最初加载配置后,任何后续保存都会转到 user profile\Application Data\Local Settings\Apps\.... 当应用程序重新启动时,它会从“user.config”中获取最后保存的配置. 谢谢。我一直在错误地尝试编辑正在运行的应用程序的 .exe.config。

以上是关于.Net 3.5 中的 Configuration.Save() 在部署/发布模式下不起作用的主要内容,如果未能解决你的问题,请参考以下文章

.net 3.5 中的反序列化对象

.NET 3.5 中的 CultureInfo 类支持哪些文化?

ListView C#(.Net 3.5)中的替代颜色?

3.5 中的 DtdProcessing 解析

选择啥? .net 3.5 中的 ASMX Web 服务或 WCF?

.NET 3.5 表达式树中的赋值