部署后运行后部署脚本的Web Deploy操作

4
我有以下问题,很惊讶在SO或MSDN上找不到直接的解决方案。
我有几个Web应用程序中现有的*.pubxml配置文件,我想执行部署后脚本 - powershell脚本 - 对WebSite及其子应用程序进行轻微的重新组织。
我没有使用Web部署包 - 只是Web Deploy。
脚本已成功部署,但问题是 - 部署后如何自动执行?
我有两种情况:
1.通过Visual Studio中的“发布...”简单地执行。
2.作为TFS Build定义(TFS 2013)的一部分执行。

  1. 在Visual Studio中进行激动人心的发布是一种极其不良的做法。
  2. 将脚本作为构建过程的一部分执行是微不足道的。你尝试了什么?
- MrHinsh - Martin Hinshelwood
  1. 好的,但我已经有它了,而且它运行良好。
  2. 我需要将其作为发布后的一部分执行。我知道如何执行构建前或构建后的脚本。我有一个脚本被部署到目标位置,我需要一种方法来执行它。就这些。
- sephirot
你需要在构建的一部分中执行它,不要仅从VS部署,而是只从构建中部署。 - MrHinsh - Martin Hinshelwood
你能具体说明一下吗?正如我所写的,我有两个选项——一个来自VS,另一个来自TFS Build Definition。在TFS构建定义中,我通过/p:DeployOnBuild=true传递给msbuild.exe,并指向解决方案中的发布配置文件。这一切都按预期工作,问题是在所有东西都已经在服务器上之后添加powershell步骤。 - sephirot
您不能使用该方法添加其他脚本。这只是为那些需要简单操作的人提供的“快速而简陋”的选项。您需要一步创建软件包,再另一步运行PowerShell。 - MrHinsh - Martin Hinshelwood
你应该升级你的TFS,因为你至少落后了4个版本... - MrHinsh - Martin Hinshelwood
2个回答

2
您可以尝试通过MSBuild定义“目标”来实现您的要求。
对于第一个场景:
Visual Studio构建过程由一系列MSBuild .targets文件定义,这些文件被导入到您的项目文件中。其中之一是Microsoft.Common.targets。该文件包含一组预定义的空目标,在构建过程中的某些主要目标之前和之后调用。
因此,您可以定义一个“Target”元素,其“AfterTarget”属性的值设置为“MSDeployPublish”:
<Target Name="CustomPostPublishActions" AfterTargets="MSDeployPublish" >
    <Exec Command="..\PostDeploymentScript.sp1 " />
</Target>

对于第二种情况:

您可以按照MrHinsh的建议添加一个PowerShell构建任务。


在 Web 应用云环境中,PostDeploymentScript.sp1 会被运行吗? - Evgeni Nabokov

1

你应该转而使用VSTS/TFS中的构建和发布进行部署。

enter image description here

您可以添加 PowerShell 构建任务,然后指向脚本或者使用内联方式(如果它较短)。如果这是您在多个构建中使用的脚本,则可能需要编写自己的构建任务。


我现在正在使用TFS 2013 On Premise。但无论如何,谢谢你的提示。我会使用TeamCity,因为它适用于小团队并具有相同的功能。 - sephirot

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接