我需要在我的网站部署后立即在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,但我找不到我是怎么做的。
答案 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>"c:\Windows\system32\schtasks.exe" "Arguments here"</Path>
</MsDeploySourceManifest>
</ItemGroup>
并不是官方保证提供商按顺序运行,但实际上它们确实如此。但是,您可能需要将目标挂钩到正确的事件中,这样您就可以在其他提供商之后注册runCommand
。