如何忽略SetParameter.xml中的连接字符串参数

时间:2016-05-25 19:26:33

标签: msbuild web-config msdeploy web.config-transform

我正在使用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步骤,该步骤不包含连接字符串参数但不起作用

1 个答案:

答案 0 :(得分:8)

将我的头撞在墙上几个小时之后,我终于找到了解决办法。 MsBuild接受一个参数-p:AutoParameterizationWebConfigConnectionStrings = false,以防止连接字符串被参数化。不幸的是,这个参数很少或没有文档。

您还可以在每个项目的基础上添加

      <AutoParameterizationWebConfigConnectionStrings>false</AutoParameterizationWebConfigConnectionStrings>

到构建配置的PropertyGroup。