MsDeploy parameters.xml:如何引用参数?
目前我正在尝试创建一个Web部署包。因此,我将parameters.xml添加到项目的根目录中,并指定了一些自定义参数。 我发现我的许多参数部分相同。所以我想做一些参数引用。为了寻找这个,我来到阿克罗斯。上面写着: 隐藏-隐藏参数不会作为安装UI的一部分显示给用户。隐藏参数必须设置defaultValue。这些参数用于设置硬编码的默认值或设置计算的默认值。在建立参数以备将来使用时,有时会使用硬编码的默认值。计算值用于从其他参数构造参数值。构造计算值时,可以通过将{}包围的其他参数名放在需要值的位置来引用其他参数。有关此标记的常见用法,请参考示例中的“连接字符串”参数 因此,根据文档,通过在“vdeDashboardAddress”上设置属性defaultValue=“https://{vdeHostName}/”和tags=“Hidden”,可以从“vdeDashboardAddress”引用参数“vdeHostName” 这使我找到parameters.xml的以下代码:MsDeploy parameters.xml:如何引用参数?,parameters,package,msdeploy,webdeploy,Parameters,Package,Msdeploy,Webdeploy,目前我正在尝试创建一个Web部署包。因此,我将parameters.xml添加到项目的根目录中,并指定了一些自定义参数。 我发现我的许多参数部分相同。所以我想做一些参数引用。为了寻找这个,我来到阿克罗斯。上面写着: 隐藏-隐藏参数不会作为安装UI的一部分显示给用户。隐藏参数必须设置defaultValue。这些参数用于设置硬编码的默认值或设置计算的默认值。在建立参数以备将来使用时,有时会使用硬编码的默认值。计算值用于从其他参数构造参数值。构造计算值时,可以通过将{}包围的其他参数名放在需要值的位
<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>