如何在Visual Studio中为自定义配置文件添加配置转换?
我正在处理的项目涉及从配置文件中读取许多服务端点(url)。 由于列表非常大,我决定将它们保存在自定义配置文件中,以保持web.config干净小巧。 我将自定义部分包含在我的网站中,如下所示:
我工作得很好。
但是在将项目部署到不同环境期间出现了转换问题。 我有三个web.config文件:
Web.config文件
Web.Uat.config
Web.Release.config
转换web.config工作时,自定义配置文件的转换在部署时失败。
有没有办法在部署期间转换自定义配置文件?
默认情况下,Visual Studio仅转换web.config文件。
如果您需要为DEV,UAT,PROD等环境进行转换的自定义配置文件,请尝试
- 使用Visual Studio的自定义扩展,如SlowCheetah -用于配置转换预览function的XML转换 。
- 从Nuget SlowCheetah添加项目以提供构建转换。
一点点细节:
从扩展和更新中添加VS Extension SlowCheetah
右键单击myconfig.config并选择add transorm:
在每个定义的配置中插入您自己的转换规则:
希望它有所帮助
我将继续介绍Andoni Ripoll Jarauta的答案。
我们遇到了类似的问题。 我想从web.config文件中提取连接字符串以限制合并冲突。 我还想在发布时创建一个包含静态信息的“发布”配置。
……够简单 创建自定义配置文件webdb.config,并更新web.config文件。
防爆。 web.config中
wedbdb.config(转换需要xml版本=“1.0”)
接下来为webdb.config添加转换文件
WebDB.Debug.config示例:
WebDB.Release.config示例:
接下来我们需要添加一个after-build事件。 这是通过简单地编辑CSPROJ文件来创建的。
现在,当我在本地运行时,我将获得WebDB.Debug.config,当我发布我的代码时,我只需要确保选择“Release”作为配置源。 在这两种情况下,构建时都会使用相应的文件更新WebDB.config文件。
注意:确保将“dbdb.config”,“webdb.debug.config”和“webdb.release.config”设置为“不复制”以显示“复制到输出目录”选项。
希望这可以帮助!
我一直在使用SlowCheetah,但我发现了一些我认为更优雅的东西。 只是告诉构建生成.config,具体取决于构建配置。
在项目中有app.Release.config(或者根据你的部署需要还有更多)你只需要编辑项目文件(如果用C#编程,则为.csproj)。 在最后一个和
之间找到它的结尾并添加:
$(OutputType) dll dll exe
从VisualStudio保存并重新加载。 在Release模式下编译并检查
文件中的bin / Release文件夹,完成转换。
此示例适用于Exe和Dll文件以及任何VisualStudio版本,因为包含此post帮助