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

How to ignore the connection string parameter in SetParameter.xml

我正在使用 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 步骤,但没有成功

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

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

      <AutoParameterizationWebConfigConnectionStrings>false</AutoParameterizationWebConfigConnectionStrings>

添加到构建配置的 PropertyGroup。