重命名Web.config以运行转换中断nuget包安装

时间:2013-11-03 05:47:32

标签: .net asp.net-mvc-4 deployment msbuild nuget

我有一个简单的场景,我将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配置移动到另一个目录,这样一旦转换发生它就不会t覆盖我的基础(原始)web.config。

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

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

1 个答案:

答案 0 :(得分:1)

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

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

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