部署至VSTS时XML转换失败,寻求Worker角色配置转换解决方案
搞定VSTS Worker角色的环境配置转换实操方案
我最近刚折腾完VSTS Worker角色的配置转换,正好和你的需求匹配,分享下我一步步实现的过程:
准备环境专属配置文件
在解决方案根目录创建App.dev.config和App.prod.config两个文件,分别存放开发、生产环境的差异化配置项。创建完成后,把它们关联到测试项目里——右键测试项目选「添加→现有项」,选中这两个文件,记得在文件属性里把「复制到输出目录」设为「如果较新则复制」,避免部署时找不到文件。生成对应构建配置的转换文件
用常用的配置转换工具,基于刚才的dev和prod配置,生成App.Debug.config(对应开发构建环境)和App.Release.config(对应生产构建环境)。这里要特别注意:转换文件里的XPath节点路径必须和主app.config的节点完全对应,不然转换操作会失效。比如要替换appSettings里的某个键,XPath得写对目标节点的位置。配置主app.config的默认读取规则
在Worker角色的主app.config里,我设置了默认读取App.dev.config的应用设置,这样本地开发时不用来回切换配置,保持主配置文件的整洁:<appSettings file="App.dev.config"> <!-- 这里放所有环境通用的基础配置项 --> </appSettings>在VSTS构建中触发转换
最后在VSTS的构建任务里,添加「配置转换」步骤,指定根据当前的构建配置(Debug/Release)自动应用对应的转换文件。还要确认构建任务的输出目录设置正确,确保转换后的配置文件能被Worker角色正常读取到。
几个踩坑后的小提示
- 所有配置文件的「复制到输出目录」属性一定要检查到位,不然部署到Worker角色后会出现配置缺失的问题
- 转换文件里的转换语法要准确,比如替换节点用
xdt:Transform="Replace",插入新节点用xdt:Transform="Insert",别写错了 - 本地测试时,可以手动切换Visual Studio的构建配置(Debug/Release),验证转换后的配置是否符合预期
内容的提问来源于stack exchange,提问作者John von No Man
相关产品推荐
相关产品推荐

