MSDeploy setParameter无法正常工作

Sha*_*neC 12 xpath web-config msdeploy webdeploy web.config-transform

我们正在尝试在构建部署系统中集成"构建一次,随处部署"模型.

MSDeploy为此创造了奇迹,通过CRC校验和比较显着缩短了构建时间,并且(在大多数情况下)使用参数化来根据我们部署的环境更改应用程序web.configs时,它也能正常工作.

我将这些参数中的大多数固定下来,但是无论我在parameters.xml文件中调用它们有多少种不同的方式,一些元素和属性似乎永远不会改变.我已经概述了三个这样的例子,这里是我试图改变的web.config文件:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <connectionStrings>
        <add name="DbConnectionString" connectionString="Data Source=null;Initial Catalog=null;Trusted_Connection=no;User ID=user1;Password=pass*9;" providerName="System.Data.SqlClient" />
    </connectionStrings>

    <system.web>
        <customErrors mode="On" defaultRedirect="/Library/Error/PageNotFound.aspx">
        </customErrors>
    </system.web>

    <applicationSettings>
        <settings>
            <setting name="service_Address" serializeAs="String">
                    <value></value>
            </setting>
        <settings>
    </applicationSettings>
</configuration>
Run Code Online (Sandbox Code Playgroud)

这是parameters.xml文件:

<parameter name="DbConnectionString" defaultValue="">
    <parameterEntry kind="XmlFile" scope="\\web.config$" match="/configuration/connectionStrings/add[@name='DbConnectionString']/@connectionString" />
</parameter>

<parameter name="customErrorsMode" defaultValue="">
    <parameterEntry kind="XmlFile" scope="\\web.config$" match="configuration/system.web/customErrors/@mode" />
</parameter>

<parameter name="service_Address" defaultValue="">
    <parameterEntry kind="XmlFile" scope="\\web.config$" match="/configuration/applicationSettings/aim.Web.Properties.Settings/setting[@name='service_Address']/value" />
</parameter>
Run Code Online (Sandbox Code Playgroud)

这是相应的setParameters.xml文件:

<setParameter name="DbConnectionString" value="Data Source=dbserver;Initial Catalog=DB1;Trusted_Connection=no;User ID=user1;Password=pass*9;"/> 

<setParameter name="customErrorsMode" value="Off"/>

<setParameter name="service_Address" value="https://myservice.asmx"/>
Run Code Online (Sandbox Code Playgroud)

我测试了每个XPath表达式,结果与任何其他工作参数完全相同,但上面似乎永远不会改变.

有没有人看到我在这里丢失的任何明显的东西?

Sha*_*neC 19

service_Address

我在这里找到了这个问题的答案:

用MSDeploy替换web.config元素

我在XPath表达式的末尾缺少'text()',正确的XPath是:

/configuration/applicationSettings/aim.Web.Properties.Settings/setting[@name='ai??m_Web_AddressService_Address']/value/text()
Run Code Online (Sandbox Code Playgroud)


customErrorsMode

对于customErrorsMode问题,我在XPath表达式的开头缺少一个'/'.正确的表达方式是:

/configuration/system.web/customErrors/@mode  
Run Code Online (Sandbox Code Playgroud)


的ConnectionStrings

这个真的得到了我,这是我想到的最后一个.在做了一些挖掘之后,我发现MSDeploy会自动参数化某些元素,连接字符串就是其中之一,更多信息请点击这里:

配置Web包部署的参数

我所讨论的连接字符串的参数声明应该是:

<parameter name="DbConnectionString-Web.config Connection String" defaultValue="">
    <parameterEntry kind="XmlFile" scope="\\web.config$" match="/configuration/connectionStrings/add[@name='DbConnectionString']" />
</parameter>
Run Code Online (Sandbox Code Playgroud)

我的setParameter定义应该如下所示:

<setParameter name="DbConnectionString-Web.config Connection String" value="Data Source=dbserver;Initial Catalog=DB1;Trusted_Connection=no;User ID=user1;Password=pass*9;" />
Run Code Online (Sandbox Code Playgroud)