我正在使用msDeploy(3.0)来部署我的MVC应用程序。我有一个构建管道,为msdeploy生成构建工件,我的部署管道在将其部署到生产实例之前,在Web.config上应用适当的web.config转换。其中一个转换包括对连接字符串的更改。但是,查看已部署的实例,我的web.config转换似乎被构建工件中setParameters.xml中的参数覆盖。
理想的行为是我将避免向SetParameter.xml添加任何连接字符串,以便我的所有连接字符串覆盖仅由我的部署管道控制。我如何实现这一目标?
以下是SetParameters.xml文件的示例
<parameters>
<setParameter name="IIS Web Application Name" value="Default/Foo"/>
<setParameter name="Foo-Web.config Connection String" value="Server=Foo,1433;Database=Bar;Integrated Security=SSPI;MultiSubnetFailover=True;App=Something;Connection Timeout=25"/>
</parameters>
理想情况下,它看起来像
<parameters>
<setParameter name="IIS Web Application Name" value="Default/Foo"/>
</parameters>
我已经尝试将parameters.xml文件传递给msbuild步骤,该步骤不包含连接字符串参数但不起作用
答案 0 :(得分:8)
将我的头撞在墙上几个小时之后,我终于找到了解决办法。 MsBuild接受一个参数-p:AutoParameterizationWebConfigConnectionStrings = false,以防止连接字符串被参数化。不幸的是,这个参数很少或没有文档。
您还可以在每个项目的基础上添加
<AutoParameterizationWebConfigConnectionStrings>false</AutoParameterizationWebConfigConnectionStrings>
到构建配置的PropertyGroup。