为部署进行 web.config 转换的最简单方法?

Easiest way to make web.config transforms for deployment?

有人有制作 web.config 转换的首选方法吗?我很好奇其他人为此做了什么。我讨厌每次更新或重新发布时都必须不断更新 web.config。

使用 VS 内置支持的最简单方法:

你有 web.config 的版本,用于你的构建版本,(默认调试和发布)

在发布版本中,您可以定义构建期间应用的转换。有效的web.config就是结果。

查看 slow cheetah 的 nuget 包:https://www.nuget.org/packages/SlowCheetah/ 这可以很好地满足您的需求。请注意,它仅用于发布转换,切换到不同的本地调试配置不会有任何影响。

  1. 为要部署到的每台服务器创建构建配置

例子

-开发服务器"copy from debug"- -Prod 服务器调试 "copy from debug"- -Prod 服务器版本 "copy from release"-

然后右键单击您的 web.config 和 select "add config transforms"

您将获得上面添加的每个配置的新转换。

现在为每个环境配置您的 Web 配置转换。

现在,当您发布时,您只需 select 配置 "Dev, Prod Debug, or Prod Release" 即可,之后无需更新。

现在,基础 web.config 应始终针对您的本地环境进行配置,因此如果您在本地 IIS 中进行设置,它将使用 web.config 而无需任何转换。您的转换应该将基础 web.config 中的本地设置转换为它们需要的 w/e。

几年前,Scott Hanselman 给出了一个使用预构建事件和批处理文件的解决方案:

http://www.hanselman.com/blog/ManagingMultipleConfigurationFileEnvironmentsWithPreBuildEvents.aspx

基本上,您为每个构建维护一个单独的不同配置,运行 批处理脚本预构建以复制 Web.Config。明显的缺点是,如果你有三十种不同的构建配置,你需要三十种不同的配置,但我发现这对于你只有两个或三个配置的项目来说很好(比如业余项目,或者你只会发布到内部服务器的工具) ).另外,很高兴知道如果您愿意,可以对构建过程进行额外的控制。