6

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

这是关于 Web 部署的。我看过很多指定 -dest:auto 的文档,这对我来说并没有什么意义。

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

例子

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

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

自动提供程序采用您指定的源并使用目标计算机上的相应位置。例如,如果您将 appHostConfig=Site1 指定为源,则目标计算机上的目标将是 Site1。当您想将网站“按原样”同步到远程计算机时,这很有用。

汽车供应商的 technet 文档

没有意义的例子:

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 网站(基于清单中的设置)

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

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

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

谢谢

4

1 回答 1

4

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

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

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

于 2012-03-01T22:20:50.640 回答