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 没有在目的地更新正确的路径的主要内容,如果未能解决你的问题,请参考以下文章

如何使用MSDeploy更新服务器中的Nuget包

MsDeploy正在返回403禁止

List ForEach 没有正确更新

WCF 中 MSI 包的自动更新

sql查询不更新img文件路径

在Visual Studio 2012中使用MSBuild PublishProfile时,MSDeploy跳过规则