Tho*_*dal 12 .net c# configuration app-config config
我已经为app.config文件中的某些设置管理了一个小GUI.GUI作为我的产品的一部分发布,可以更改app.config文件中的值,而无需在文本编辑器中打开它.
这些属性在自定义configSection中实现,使其在代码中强类型化.我的问题是,当app.config文件更新时(当我从GUI保存时),我的程序集的完全限定名称写在configSection中,如下所示:
<section name="ConfigurationSettings" type="PerformanceDude.MSBuildShellExtension.Common.ConfigurationSettings, Common, Version=2.2.1.0, Culture=neutral, PublicKeyToken=1ab1b15115e63xxx" />
Run Code Online (Sandbox Code Playgroud)
当我将此程序集升级到新版本号时,GUI代码程序集版本不再与app.config中的程序集引用相匹配.
这是我加载设置的方式:
var config = ConfigurationManager.OpenMappedExeConfiguration(new ExeConfigurationFileMap() { ExeConfigFilename = ConfigFilePath }, ConfigurationUserLevel.None);
var settings = Config.GetSection("ConfigurationSettings") as ConfigurationSettings;
Run Code Online (Sandbox Code Playgroud)
这是我保存设置的方式:
config.Save(ConfigurationSaveMode.Minimal, true);
Run Code Online (Sandbox Code Playgroud)
每次更新时我都不想编写更新版本的升级脚本.有谁知道这个问题的一个很好的解决方案?
我以前也做过类似的事情。我最终将配置文件加载为 xml,将相关部分反序列化为对象,然后将它们放回到 xml 中。以这种方式避免使用 .net 配置 API 可以避免版本问题。
另一种方法是将旧版本的程序集重定向到新版本。如果您的程序集位于 GAC 中,则可以使用策略文件来执行此操作,并在部署新版本时部署它们;那么配置中的版本号就无关紧要了。
归档时间: |
|
查看次数: |
862 次 |
最近记录: |