Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/269.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# 如何使用ConfigurationManager通过ClickOnce更新持久化app.config?_C#_Clickonce_App Config_Configurationmanager - Fatal编程技术网

C# 如何使用ConfigurationManager通过ClickOnce更新持久化app.config?

C# 如何使用ConfigurationManager通过ClickOnce更新持久化app.config?,c#,clickonce,app-config,configurationmanager,C#,Clickonce,App Config,Configurationmanager,准确地描述了我的问题,除了我使用app.config中的自定义配置部分和ConfigurationManager,因此这里提供的解决方案不适用于 基本上,我的问题是,当ClickOnce更新应用程序时,它会与新的app.config一起安装到不同的目录中,从而删除所做的任何更改。我的应用程序使用app.config保存应用程序设置,所以这非常糟糕。。。合并的更新会很好(类似于在另一个问题中所实现的),但是在这一点上,几乎任何自动化的更新都会很好 或者我应该为app.config文件使用一个设置的

准确地描述了我的问题,除了我使用
app.config
中的自定义配置部分和
ConfigurationManager
,因此这里提供的解决方案不适用于

基本上,我的问题是,当ClickOnce更新应用程序时,它会与新的app.config一起安装到不同的目录中,从而删除所做的任何更改。我的应用程序使用app.config保存应用程序设置,所以这非常糟糕。。。合并的更新会很好(类似于在另一个问题中所实现的),但是在这一点上,几乎任何自动化的更新都会很好


或者我应该为app.config文件使用一个设置的位置,而不是尝试使用默认位置吗?

ClickOnce应该在更新之间保持用户设置,但由于未知原因,我失败了一次或两次(并且结果不好)。我没有尝试过自定义配置设置,但我对ClickOnce不覆盖设置的能力失去了信心

我计划使用的方法是手动处理ClickOnce更新,而不是允许应用程序。检查更新并提示用户安装。我也有几个用户不接受更新,这是一个痛苦的恢复。通过手动处理更新,我希望能够在更新之前将用户设置读取到内存中,然后在更新完成后将其写回。有一个ApplicationUpdated事件可以满足此目的

也许这种方法也适用于您

编辑以添加引用:


谷歌搜索ApplicationDeployment也会有所帮助。

此ApplicationUpdate事件在哪里?我在对象浏览器中找不到它。。。此外,这对问题也没有帮助(尽管这是一个很好的功能,我从不喜欢ClickOnce对话框),更新仍然安装到新目录,因此旧的app.config已丢失:关于ApplicationSettingsBase的第二个链接,我从ConfigurationSection继承,这对我来说不是一个选项,是吗?看看Deployment.Application.ApplicationDeployment类。当我提到ApplicationUpdate事件时,我想我是在看示例代码。我意识到旧的app.config丢失了,我的想法是从当前配置中读取用户设置,更新,然后将用户设置写入新配置。遗憾的是,找到新配置和找到旧配置一样困难。。。还是这样?我无法理解clickonce应用程序的目录结构。。。我的应用程序是一个完全信任的应用程序,所以权限不是问题,如果我们能够计算出那么多的输出,那么现在我已经决定在%appdata%中的适当位置安装app.config,它可以工作,并且在更新过程中不会被触及。。。同时也为我提供了我想要的基于用户的设置,所以我认为这是一个双赢的局面。。。