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

Sco*_*tes 6 msdeploy webdeploy

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

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

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

msdeploy.exe -verb:sync -source:appHostConfig ="MySite"-dest:auto,computername = Server1

当destination参数与-source参数相同时,auto提供程序使您可以避免输入-dest参数的完整路径.它还消除了从存档或包中单独复制清单文件的需要.

自动提供程序获取您指定的源并使用目标计算机上的相应位置.例如,如果指定appHostConfig = Site1作为源,则目标计算机上的目标将为Site1.当您希望"按原样"将网站同步到远程计算机时,这非常有用.

technet docs for auto provider

没有意义的例子:

msdeploy.exe -verb:sync -source:package=myapp.zip -dest:auto
Run Code Online (Sandbox Code Playgroud)

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

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

"C:\Program Files\IIS\Microsoft Web Deploy V2\\msdeploy.exe" -source:package='MySourcePath' -dest:auto"  
Run Code Online (Sandbox Code Playgroud)

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

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

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

例如,此SO链接指定使用自动提供程序作为dest参数.

谢谢

tim*_*amm 4

我想你实际上已经为自己找到了答案。

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

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