MSDeploy 没有在目的地更新正确的路径
Posted
技术标签:
【中文标题】MSDeploy 没有在目的地更新正确的路径【英文标题】:MSDeploy Not Updating Correct Path at Destination 【发布时间】:2017-07-02 13:31:49 【问题描述】:我正在尝试在 VSTS 中配置构建和发布管道,以便可以将构建推送到各种环境。为此,我利用了 MSDeploy 的 parameters.xml 文件,并使用 Tokenizer 任务覆盖在 SetParameters.xml 文件中设置的令牌。
当我部署到站点时,它确实到达了目标计算机并在那里部署,但路径不正确。它似乎没有复制到我在 parameters.xml 中指定的 Web 应用程序的虚拟目录,而是采用包中的路径并复制它(因此,C:\agent_work...)。
我知道标记器和至少部分 parameters.xml 和 SetParameters.xml 正在工作并正确转换连接字符串,因为生成的 web.config 确实具有正确的这些值,但 IIS Web 应用程序名称参数没有似乎工作正常。
如果我创建自己的发布配置文件并在 DeployIisAppPath 中硬编码站点名称并使用它来打包,我确实可以使用它。但是,这并不理想,因为我希望将站点名称作为参数。
这里是所有相关文件。如果您需要更多信息,请告诉我。提前非常感谢!
parameters.xml
<parameters>
<parameter name="IIS Web Application Name"
description="Please specify the IIS Web Application Name"
defaultValue="__IISWebApplicationName__">
<parameterentry kind="ProviderPath"
scope="IisApp"
match="@defaultValue">
</parameterentry>
</parameter>
</parameters>
VS 解决方案构建任务参数
/p:PackageAsSingleFile=true
/p:SkipInvalidConfigurations=true
/p:PackageLocation=$(build.artifactstagingdirectory)
/p:AllowUntrustedCertificate=true
/p:IncludeSetAclProviderOnDestination=False
/p:DeployOnBuild=true
/p:AllowUntrustedCertificate=true
/p:WebPublishMethod=Package
/p:SkipInvalidConfigurations=true
/p:DisableAllVSGeneratedMSDeployParameter=true
打包后的SetParameters.xml
<?xml version="1.0" encoding="utf-8"?>
<parameters>
<setParameter name="IIS Web Application Name" value="__IISWebApplicationName__" />
</parameters>
发布任务环境变量配置
名称 = IISWebApplicationName
值 = 站点名称
MSDeploy 配置
目标提供者:自动
目标计算机:https://server:8172/msdeploy.axd?site=$(IISWebApplicationName)
MSDeploy 命令
msdeploy.exe -verb:sync -source:package='C:\agent\_work\r4\a\buildName\drop\packageName' -dest:auto,computerName='https://server:8172/msdeploy.axd?site=Site Name',userName='xxx',password='xxx',authType='basic',includeAcls='False' -allowUntrusted -setParamFile=C:\path\to\param\file -verbose
【问题讨论】:
【参考方案1】:您可以使用 IIS Web App Deploy 任务将 Web 应用程序部署到 IIS,然后您只需使用变量直接指定网站名称。
-
Configure Deployment group
编辑发布定义
在部署组上添加运行
添加 IIS Web App Deploy 任务并指定网站名称
另一方面,IIS Web App Deployment Using WinRM extension 中的 WinRM: IIS Web App Deployment 任务工作正常(不需要配置部署组。)
【讨论】:
感谢您的帮助 - 这实际上将我引向了正确的方向,也教会了我关于 VSTS 部署组的知识!三件事最终为我解决了这个问题。 1) 删除 /p:DisableAllVSGeneratedMSDeployParameter=true 2) 在 parameters.xml 中使用“-Web.config Connection String”为连接字符串的名称添加后缀 3) 使用部署代理运行部署并使用 IIS Web App 部署任务而不是第 3 个任务我之前使用的派对任务以上是关于MSDeploy 没有在目的地更新正确的路径的主要内容,如果未能解决你的问题,请参考以下文章