惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

GbyAI
GbyAI
Blog — PlanetScale
Blog — PlanetScale
The GitHub Blog
The GitHub Blog
Microsoft Security Blog
Microsoft Security Blog
I
InfoQ
A
About on SuperTechFans
T
The Blog of Author Tim Ferriss
D
DataBreaches.Net
L
LangChain Blog
F
Fortinet All Blogs
C
Check Point Blog
Google DeepMind News
Google DeepMind News
云风的 BLOG
云风的 BLOG
Engineering at Meta
Engineering at Meta
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
H
Help Net Security
J
Java Code Geeks
月光博客
月光博客
H
Hackread – Cybersecurity News, Data Breaches, AI and More
IT之家
IT之家
aimingoo的专栏
aimingoo的专栏
小众软件
小众软件
宝玉的分享
宝玉的分享
Jina AI
Jina AI

博客园 - cdboy

.Net8新特性 EF Core 中原生SQL、存储过程、视图的使用 EF Core DBFirst 和Code First小结 Logstash日志搜集 Windows Service插件服务开源 Linq通用分页数据查询方法 .Net 通用配置文件读取方法 Asp.net 主题中CSS文件的缓存问题 Asp .net 4.0 中ViewStatus 使用 RssTookit使用小结 Windows Live Writer 分享到插件 Windows Resx资源文件编辑工具 IIS 7 中设置文件上传大小限制设置方法 多语言资源文件帮助 转帖:正则表达式的与或非 vs2010使用PostSharp 1.5 window service 插件服务插件开发 插件式服务架构 多语言资源工具之制作类库资源文件
软件自动发布自动化之配置文件修改
cdboy · 2019-12-11 · via 博客园 - cdboy

.net 平台中,配置文件有web.config和app.config两种,前者是web站点的配置文件,后面是WinForm应用的配置文件,基本库对这两种配置文件的读取提供很好支持。
但对文件本身的修改支持的不是太好,最近这段时间准备做.net应用的自动发布工具,在版本发布时,需要进行配置文件的自动修改,经过查询解决方案找到如下几种修改方法:

  • Xml解析方式

这种方式要求配置人员了解Xml Dom结构,熟悉XPath语法,使用起来难度比较大,配置起来相对复杂,需要完全自主开发。

  • XDT Transformation tool

此种方式配置灵活,使用 XDT transform engine,可以应用于任意Xml文件的解析,需要学习XDT转换语法,可参考文档:

https://docs.microsoft.com/en-us/previous-versions/aspnet/dd465326(v=vs.110)?redirectedfrom=MSDN


工具源码地址:

https://github.com/cdzhoubin/Config-Transformation-Tool

  • ConfigMerge

此种方式专门用于,合并两个配置文件,新配置文件的内容,可以是新增,删除,修改旧的配置文件内容,用户不用了解XPath语法,直接使用与修改源相同的文件结构就可以,简单易用,网上的源码库地址如下:
https://github.com/loftum/ConfigMerge
合并方法:
Example transformation

App.root.config:

 App.override.config:

Result:

为了更好的使用这个工具,我需要这个工具即支持命令行的方式工作,也支持WinForm的方式工作(提供配置管理功能),我对此工具作了重构,并写了WinForm程序,效果如下所示:

新增

 合并

源码地址:https://github.com/cdzhoubin/ConfigMerge

此Winform小程序,包括ErrorProvider控件使用,通用属性检验的使用,如(StringLength,Required)等等,数据与控件的双向绑定等

如对此感兴趣,可以关注公众号获取更多文章信息。