使用MSDeploy将可执行文件复制到服务器,然后运行它

时间:2011-12-18 15:23:34

标签: .net msdeploy

我已经让MSDeploy / WebDeploy更新了我的Web应用程序 - 这解决了我迄今为止已经设置的内容的约90%的部署问题。

另外,我想要做的是将可执行文件(实际上是文件夹的内容)复制到服务器,然后运行该可执行文件(执行模式更新)。

我可以看到这应该是可能的,但我正在努力将各个部分组合在一起(这显然是一个边缘情况)。

具体做法是:

  • 我不想将可执行文件(文件夹)复制到网络目录中。
  • 我需要考虑运行可执行文件的结果(对于返回失败状态非常有用,但如果重要的话会在部署后的测试中抛出)

因此,什么具体的命令以什么顺序 - 如果我能找到一个模式我可以使它工作,但我正在努力找出一个模式


备注:

我确实可以将文件夹复制到web目录,运行代码然后再次删除文件夹,但我对此感到不舒服,无论如何最好让代码可用于服务器部署后。

还值得注意的是,我真的真的对我维护数据库模式的方式感到满意,所以可执行文件正在做的事实是问题的附带事实

1 个答案:

答案 0 :(得分:12)

Web Deploy实际上提供了很多选项。您选择哪种选项取决于您希望将多少内容放入一个命令中。

要将文件文件夹转到目标,您可以使用Web Deploy的dirPath提供程序复制到您选择的位置。要复制单个文件,您可以使用filePath提供程序。如果您的复制源包含许多小文件,那么Web Deploy实际上比网络上的RoboCopy更高效(请参阅我的博文Web Deploy vs. Robocopy)。

要运行您复制到目标服务器的命令文件,可以使用runCommand提供程序。 (这是一个重要的,我肯定会读到它。)

请注意,此时我们讨论的是至少两个单独的Web Deploy命令,不包括任何“常规”Web部署操作,如部署网站或Web服务器。

但是,如果您的目标是在一个Web部署操作中实现所有内容,则可以使用manifest提供程序。创建一个自定义清单文件,该文件指定将依次执行的一系列Web Deploy提供程序操作。然后,在Web Deploy命令中,将清单提供程序指向自定义清单文件。有关此方法的详细信息,请参阅Creating and Synchronizing a Custom Manifest

如果您确实使用清单提供程序,则可以在清单文件中指定 dirPath 提供程序以复制一个或多个文件,然后指定 runCommand 提供程序实际运行您复制的可执行文件的后续行。

最后,使用清单文件一步的方法是使用 preSync 和/或 postSync 命令行开关在目标服务器上运行命令或者在实际的Web部署操作发生之后。您可以在Web Deploy Operation Settings页面上找到有关 preSync postSync 的更多信息。

所有引用的页面都有语法示例,因此应该有所帮助。