0

我有一个简单的场景,我有我的 Web.config,然后是一个 Web.Release.config,我想在部署到生产环境时使用它来转换 Web.config。仅当您在 VS 中发布时,转换才会自动运行,并且我没有使用 VS 进行部署,而是使用外部源代码控制和巡航控制来构建和部署。

我已经看到了这个问题的几种解决方案:

1)使用基础web.config文件(Web.base.config),以便在构建过程中通过修改项目文件来覆盖Web.config文件。2)安装一个扩展来处理这个 3)在巡航控制中导入目标并基本上做与#1手动运行转换相同的事情,但这仍然需要一个与目标 web.config 分开的基本配置文件

所有这些的问题是我必须重命名我的 web.config(例如到 Web.base.config)或者我必须将 web 配置移动到不同的目录,这样一旦发生转换它就不会覆盖我的基础(原始)web.config。

如果我这样做,那么当我安装/更新任何修改 web.config 的 nuget 包时,它会将更改添加到 Web.config,每次转换发生时,当确实需要将更改应用于基础时,这些更改将被覆盖网络配置。

我到处搜索,没有人提到这是一个问题。我错过了什么吗?我希望有人可以提供不需要更改原始 Web.config 文件名/位置的解决方案。

4

1 回答 1

1

这是因为转换任务本身锁定了 web.config。

我相信最简单的解决方案是在转换之前使用复制任务并将您的配置复制到 web.config.copy。然后将您的 web.config.copy 转换为 web.config.transformed,然后将其复制回 web.config。

复制任务可以覆盖只读,因此您不应该对源代码控制文件有任何问题

于 2013-11-03T11:57:41.583 回答