MSDeploy setParameter 不起作用

2024-03-24

我们正在尝试将“构建一次,随处部署”模型集成到我们的构建-部署系统中。

MSDeploy 在这方面发挥了奇迹,通过 CRC 校验和比较和(大部分情况下)当使用参数化根据我们部署到的环境来更改应用程序 web.configs 时,它也同样有效。

我已经确定了大部分参数,但还有一些元素和属性never无论我在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>

这是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>

这是相应的 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"/>

我已经测试了每个 XPath 表达式,结果与任何其他工作参数完全相同,但上述内容似乎从未改变。

有人看到我在这里失踪的明显东西吗?


服务地址

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

将 web.config 元素替换为 MSDeploy https://stackoverflow.com/questions/3257915/replace-web-config-elements-with-msdeploy-parameters

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

/configuration/applicationSettings/aim.Web.Properties.Settings/setting[@name='ai‌​m_Web_AddressService_Address']/value/text()

自定义错误模式

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

/configuration/system.web/customErrors/@mode  

连接字符串

这对我来说真的很重要,这是我最后想出来的。经过一番挖掘后,我发现 MSDeploy 自动参数化某些元素,连接字符串就是其中之一,更多信息如下:

配置Web包部署参数 http://www.asp.net/web-forms/tutorials/deployment/web-deployment-in-the-enterprise/configuring-parameters-for-web-package-deployment

我对相关连接字符串的参数声明应该是:

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

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

<setParameter name="DbConnectionString-Web.config Connection String" value="Data Source=dbserver;Initial Catalog=DB1;Trusted_Connection=no;User ID=user1;Password=pass*9;" />
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MSDeploy setParameter 不起作用 的相关文章

随机推荐