【问题标题】:MsDeploy parameters.xml: howto refer a parameter?MsDeploy parameters.xml:如何引用参数?
【发布时间】:2014-06-02 18:18:41
【问题描述】:

目前我正在尝试创建一个 Web 部署包。所以我在项目的根目录中添加了一个 parameters.xml 并指定了一些自定义参数。 我发现我的很多参数都部分相同。所以我想做某种参数引用。寻找这个,我来了Reference for the Web Application Package。上面写着:

隐藏 - 隐藏参数不会作为安装 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>

但是,情况似乎并非如此。它不引用/替换 defaultValue 中的属性部分。 目前正在输出:

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

我在这里找到的唯一一个提到我的问题的帖子是How to get Deploy.cmd to fill in replacement fields from Parameters.xml

  1. 有谁知道我在这里做错了什么?
  2. 规格不正确吗?那么,如何在parameters.xml 中进行部分替换呢?

提前谢谢你!

最好的问候,rdvanbuuren

【问题讨论】:

  • 我也有同样的问题。你有解决方案吗?
  • 不,我还没有遇到任何解决方案。我想出的唯一解决方案就是完整地编写它,而不是使用替换。

标签: parameters package msdeploy webdeploy


【解决方案1】:

我在 parameters.xml 中看到一个可能的问题:您的 xml 根 &lt;parameters&gt; 标记未关闭。所以我建议用&lt;/parameters&gt;替换最后一行,然后再试一次

【讨论】:

    【解决方案2】:

    根据我的经验,如果通过 parameters.xml 文件进行替换,则无法完成该排序。就我而言,我必须使用publish profile(或 .wpp.targets 文件)这样做。

    此方法将您尝试子转换的参数排除在 setparameters.xml 文件中,这似乎是使用 .Deploy.cmd 导入时使替换工作的关键。

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

    <?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>
    

    ExcludeFromSetParameters 元素使这里的魔法成为可能,它将 vdeDashboardAddress 排除在 .SetParameters.xml 文件之外,从而允许替换工作。显然,您希望从您的 parameters.xml 中删除相应的内容

    但有一个警告:验证范围是否正确(根据另一个答案)。我提供的这个例子假设这些东西存在于 web.config 中

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-08-15
        • 1970-01-01
        • 1970-01-01
        • 2022-10-07
        • 1970-01-01
        • 2011-03-30
        • 1970-01-01
        相关资源
        最近更新 更多