部署后安排任务

时间:2013-04-23 12:52:32

标签: tfs msbuild scheduled-tasks msdeploy

我需要在我的网站部署后立即在Windows任务计划程序(Windows Server 2008 R2上的v2.0)中设置计划任务。

我正在使用TFS 2010来构建我的应用程序,显然我的MSBuild参数包含参数/P:DeployOnBuild=True /P:DeployTarget=MSDeployPublish /P:CreatePackageOnPublish=true /P:MSDeployPublishMethod=WMSvc

我知道我可以使用Schtasks.exe通过命令行设置计划任务,我也知道MsDeploy有一个runCommand提供程序。所以我想我可以使用runCommand来运行Schtasks.exe所需的参数。

我的问题是我是如何在TFS和MsBuild中完成的。我假设我可以将一些参数传递给MsBuild,它们会“按原样”传输给MsDeploy,但我找不到我是怎么做的。

1 个答案:

答案 0 :(得分:1)

如果必须在构建之后,您需要使用postSync msdeploy argument来执行runCommand。由于Visual Studio的MSBuild任务无法使用postSync,因此您需要生成一个包,然后运行生成的cmd文件,并将postSync参数添加到最后。

Package.cmd -postSync:runCommand="c:\windows\system32\schtasks.exe arguments"

如果 在构建之后,则可以通过将以下内容添加到发布配置文件(pubxml),.wpp.targets文件或项目文件中来添加其他提供项:

<ItemGroup>
  <MsDeploySourceManifest Include="runCommand">
    <Path>&quot;c:\Windows\system32\schtasks.exe&quot; &quot;Arguments here&quot;</Path>
  </MsDeploySourceManifest>
</ItemGroup>

并不是官方保证提供商按顺序运行,但实际上它们确实如此。但是,您可能需要将目标挂钩到正确的事件中,这样您就可以在其他提供商之后注册runCommand