Web部署中的自动提供程序究竟是什么(msdeploy.exe)

时间:2011-08-17 17:42:29

标签: msdeploy webdeploy

有人可以解释(比technet / msdn docs更好)汽车提供商究竟做了什么,它是如何工作的,以及何时使用它。

这与Web部署有关。我已经看过很多指定-dest:auto的文档,但这对我来说并没有多大意义。

  

自动提供程序指定目标上的提供程序   与源提供者相同。

     

实施例

     

msdeploy.exe -verb:sync -source:appHostConfig =“MySite”   -dest:汽车,计算机名= Server1的

     

自动提供程序可让您避免输入完整路径   -dest参数,当目标参数与。相同时   -source参数。它还消除了复制清单文件的需要   与档案或包裹分开。

     

自动提供程序获取您指定的源并使用   目标计算机上的相应位置。例如,如果   你指定appHostConfig = Site1作为源,目的地就是   目标计算机将是Site1。这在你想要的时候非常有用   将网站“按原样”同步到远程计算机。

technet docs for auto provider

没有意义的例子:

msdeploy.exe -verb:sync -source:package=myapp.zip -dest:auto

为什么要将目标确切地设置为源?有什么意义?你不是只是用iteslf来覆盖源代码吗?

通过在VS2010中发布包生成的生成的cmd文件生成如下内容:

"C:\Program Files\IIS\Microsoft Web Deploy V2\\msdeploy.exe" -source:package='MySourcePath' -dest:auto"  

自动意味着源只会覆盖自己吗?但它没有,它实际上更新了IIS网站(基于清单中的设置)

我尝试使用package作为目标,在这种情况下,它确实更新了源包而不是IIS站点。

这个问题的催化剂是我正在实施CI,我过去总是使用msbuild / xcopy。我想现在使用msdeploy。我想理解它,而不是简单地调用从visual studio生成的 myproject.cmd

例如,this SO link指定使用自动提供程序作为dest参数。

由于

1 个答案:

答案 0 :(得分:4)

我认为你实际上已经找到了答案。

如果源是一个包并且目标是auto,那只是意味着包中指定 包的组件将被“解压缩”并放在目标服务器上。在-source:package -dest:auto语法中,“auto”表示包本身就是目的地。

并且,正如您所观察到的,如果您指定一个包作为目标,那么您为源指定的任何内容都将打包为zip文件,以后您可以将其用作在其他地方部署的源。