【问题标题】:How to ignore the connection string parameter in SetParameter.xml如何忽略 SetParameter.xml 中的连接字符串参数
【发布时间】:2016-05-25 19:26:32
【问题描述】:

我正在使用 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 web-config msdeploy web.config-transform


    【解决方案1】:

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

    您也可以在每个项目的基础上添加此设置

          <AutoParameterizationWebConfigConnectionStrings>false</AutoParameterizationWebConfigConnectionStrings>
    

    到您的构建配置的 PropertyGroup。

    【讨论】:

    • 我遇到了同样的问题。在我转换之后,这个 SetParamters 会将我的连接字符串设置为它们最初的状态。你知道这些价值观是从哪里来的吗?我的 parameters.xml 文件不包含任何连接字符串设置
    猜你喜欢
    • 1970-01-01
    • 2017-12-30
    • 1970-01-01
    • 2013-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多