MsDeploy parameters.xml:如何引用参数?

MsDeploy parameters.xml:如何引用参数?,parameters,package,msdeploy,webdeploy,Parameters,Package,Msdeploy,Webdeploy,目前我正在尝试创建一个Web部署包。因此,我将parameters.xml添加到项目的根目录中,并指定了一些自定义参数。 我发现我的许多参数部分相同。所以我想做一些参数引用。为了寻找这个,我来到阿克罗斯。上面写着: 隐藏-隐藏参数不会作为安装UI的一部分显示给用户。隐藏参数必须设置defaultValue。这些参数用于设置硬编码的默认值或设置计算的默认值。在建立参数以备将来使用时,有时会使用硬编码的默认值。计算值用于从其他参数构造参数值。构造计算值时,可以通过将{}包围的其他参数名放在需要值的位

目前我正在尝试创建一个Web部署包。因此,我将parameters.xml添加到项目的根目录中,并指定了一些自定义参数。 我发现我的许多参数部分相同。所以我想做一些参数引用。为了寻找这个,我来到阿克罗斯。上面写着:

隐藏-隐藏参数不会作为安装UI的一部分显示给用户。隐藏参数必须设置defaultValue。这些参数用于设置硬编码的默认值或设置计算的默认值。在建立参数以备将来使用时,有时会使用硬编码的默认值。计算值用于从其他参数构造参数值。构造计算值时,可以通过将{}包围的其他参数名放在需要值的位置来引用其他参数。有关此标记的常见用法,请参考示例中的“连接字符串”参数

因此,根据文档,通过在“vdeDashboardAddress”上设置属性defaultValue=“https://{vdeHostName}/”和tags=“Hidden”,可以从“vdeDashboardAddress”引用参数“vdeHostName”

这使我找到parameters.xml的以下代码:

<parameters>
  <parameter name="vdeHostname" description="Please provide the hostname" defaultValue="www.test.com">
    <description culture="en">The hostname of the website.</description>
    <parameterEntry kind="XmlFile"
                    scope="obj\\Release\\Package\\PackageTmp\\Configuration\\hosts\.config$"
                    match="/hostConfigurationSection/hostConfigurations/add[@name='Default']/@host" />
  </parameter>
  <parameter name="vdeDashboardAddress" defaultValue="https://{vdeHostname}/" tags="Hidden">
    <description culture="en">The https address of the Dashboard.</description>
    <parameterEntry kind="XmlFile"
                    scope="obj\\Release\\Package\\PackageTmp\\Configuration\\identity\.config$"
                    match="/system.identityModel/identityConfiguration[@name='Default']/audienceUris/add/@value" />
  </parameter>
<parameters>

网站的主机名。
仪表板的https地址。
然而,情况似乎并非如此。它不会引用/替换defaultValue中的属性部分。 目前正在输出:

<audienceUris>
  <add value="https://{vdeHostname}/" />
</audienceUris>

  • 有人知道我做错了什么吗
  • 规格不正确吗?那么,如何在parameters.xml中进行部分替换呢 提前谢谢你


    致以最诚挚的问候,rdvanbuuren我不确定,但是
    scope
    属性在我看来很可疑。我面前的(工作)参数文件中的所有范围元素的形式都是
    scope=“\\Path\\To\\file\.extension$”
    ,其中指定的路径假定从部署应用程序的根文件夹开始。(例如,最常见的是
    scope=“\\Web\.config$”
    )我的工作文件中的任何范围属性都不包括路径的Package\PackageTmp部分,即使该路径存在于WebDeploy使用的zip文件中。

    根据我的经验,如果通过parameters.xml文件进行替换,则无法完成排序。在我的例子中,我必须使用一个(或.wpp.targets文件)来执行此操作

    此方法排除了setparameters.xml文件中包含的您试图细分的参数,该文件似乎是使用.Deploy.cmd导入时使替换生效的关键

    因此,您应该能够按照上面链接的说明创建目标文件。然后,您需要在文件中包含以下内容(基于原始示例):

    
    xml文件
    Web.config
    /hostConfigurationSection/hostConfigurations/add[@name='Default']/@host
    网站的主机名。
    www.test.com
    www.test.com
    xml文件
    Web.config
    /system.identityModel/identityConfiguration[@name='Default']/audienceUris/add/@value
    仪表板的https地址。
    https://{vdeHostname}/
    隐藏的
    真的
    
    这里的神奇之处在于ExcludeFromSetParameters元素,它将vdeDashboardAddress保留在.SetParameters.xml文件之外,从而允许替换工作。显然,您希望从parameters.xml中删除相应的内容


    不过有一个警告:验证范围是否正确(根据另一个答案)。我提供的这个示例假设这些东西存在于web.config中,我在parameters.xml中看到一个可能的问题:您的xml根
    标记未关闭。因此,我建议将最后一行替换为
    ,然后重试我也遇到了同样的问题。你有解决办法吗?没有,我还没有找到任何解决办法。我提出的唯一解决方案是完全编写它,而不是使用替换。
    <?xml version="1.0" encoding="utf-8"?>
    <Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
    
        <Target Name="DeclareCustomParameters" BeforeTargets="Package">
            <ItemGroup>
    
                <MsDeployDeclareParameters Include="vdeHostname">
                    <Kind>XmlFile</Kind>
                    <Scope>Web.config</Scope>
                    <Match>/hostConfigurationSection/hostConfigurations/add[@name='Default']/@host</Match>
                    <Description>The hostname of the website.</Description>
                    <Value>www.test.com</Value>
                    <DefaultValue>www.test.com</DefaultValue>
                </MsDeployDeclareParameters>
    
                <MsDeployDeclareParameters Include="vdeDashboardAddress">
                    <Kind>XmlFile</Kind>
                    <Scope>Web.config</Scope>
                    <Match>/system.identityModel/identityConfiguration[@name='Default']/audienceUris/add/@value</Match>
                    <Description>The https address of the Dashboard.</Description>
                    <DefaultValue>https://{vdeHostname}/</DefaultValue>
                    <Tags>Hidden</Tags>
                    <ExcludeFromSetParameter>True</ExcludeFromSetParameter>
                </MsDeployDeclareParameters>
    
            </ItemGroup>
        </Target>
    
    </Project>