C# App.config补丁/更新

C# App.config补丁/更新,c#,.net,configuration,app-config,C#,.net,Configuration,App Config,执行升级时,如何正确修补用户的App.config 覆盖旧文件是有问题的,因为配置更改会丢失,但是,如果添加了新值/更改了旧值,我不能只保留旧文件。好吧,这取决于您如何处理升级过程,以及您在advanced中为次要/主要版本升级设计和规划的效果如何。它背后没有真正的火箭科学,正如其中一条评论所说,您只是在处理xml文件。此外,.NET Framework中有一个设计良好的内置API,允许开发人员处理驻留在System.Configuration命名空间中的配置文件 现在,我在过去做桌面开发时做过

执行升级时,如何正确修补用户的App.config


覆盖旧文件是有问题的,因为配置更改会丢失,但是,如果添加了新值/更改了旧值,我不能只保留旧文件。

好吧,这取决于您如何处理升级过程,以及您在advanced中为次要/主要版本升级设计和规划的效果如何。它背后没有真正的火箭科学,正如其中一条评论所说,您只是在处理xml文件。此外,.NET Framework中有一个设计良好的内置API,允许开发人员处理驻留在
System.Configuration
命名空间中的配置文件

现在,我在过去做桌面开发时做过这件事(老派的方式…我认为没有太大的改变),我有一个web服务运行在某个地方,其中两个端点公开了应用程序的最新版本,另一个端点公开了最新应用程序安装程序的打包版本,安装在最终用户桌面上的应用程序将在用户每次启动应用程序时调用此服务,如果升级可用,应用程序将启动一个单独的进程(更新程序),该进程将处理版本迁移和安装。这将负责所有设置迁移,包括配置文件、本地存储(如果有)等


我并不是说它是最好的解决方案或任何东西,但它给了您很大的灵活性和对过程的控制,最重要的是它是有效的。这与许多大型软件公司遵循的流程完全相同。但是,这确实需要一点计划。

我现在使用的解决方案只是将特定于机器的设置应用于
user.config
。很好用

小心点?配置文件只是XML—您可以随时读取它并以任何方式合并。。。另外,我认为.Net中没有现有的“合并配置”功能。。。请注意,如果允许用户更改单独文件中的设置(即全局对每个用户),则可以避免整个问题-考虑未来。