MSDeploy的看法

16

你知道,下一个来自微软的"大型"和"企业级"的东西。

是只有我觉得这对人类真的很难吗?主要亮点如下(在我看来):

  • 绝对晦涩的语法(-skip:objectName=filePath,absolutePath=App_Offline.* 仅用于跳过 App_Offline.html
  • 清单作为事后想法
  • 缺乏详尽的文档
  • 关于可扩展性没有一句话(除了几篇博客文章)。而且,所有这些费力开发的扩展都必须在 GAC 和注册表中注册
  • 太低层次了(元数据/元键;所有这些 IIS 技术)
  • 没有与 MSBuild 集成

当然,MSDeploy 和 MSDeployAgent 相当强大,但它们真的需要为相对简单的任务变得如此复杂吗?


2
虽然有点晚了,但是跳过文件有一个快捷语法-skip:File=App_Offline.*文档列出了其他的快捷方式 - Richard Szalay
6个回答

10

我也和您一样对这个工具缺乏文档和表现出低级特性感到失望。

然而,微软所做的是最终创建了一个免费工具,可以实际脚本化整个服务器部署,包括参数化地址、配置等等。这是非常复杂的事情-考虑到有多少配置要涉及到一个Web服务器-这可能是完成所有这些操作的最佳方式。

现在我们需要的是一个真正好用的GUI来帮助构建这些包和脚本等等。嵌入在IIS中的GUI很好-但同样,解释不足-希望不久之后会得到改善。

在功能方面,我目前正在使用该工具将网站从开发环境(development)部署到预发布环境(staging),再到生产环境(live)并修改绑定IP地址等参数。我曾经深感沮丧,因为花了我几天时间才将其全部搞定,但是现在我已经解决了这个问题,我可以消除IT支持部门可能发生的许多人为错误-他们负责我们的部署。现在我只需要关心我的主预发布服务器的配置,并确信当我进行部署时,Web服务器群集中的所有服务器都将保持同步。

正如Sayed所提到的那样,2010年有MSBuild任务(现在使用msdeploy实现网站部署特性)与此配合使用-这也带来了真正的持续集成环境对于VSTeamSystem-拥有一个团队构建可以作为其最后一步执行完整的Web部署是非常令人兴奋的(当然也很可怕!)。


4

实际上,MSDeploy有针对MSBuild的任务。它们将随.NET 4/Visual Studio 2010一起提供。


@TimAbell - VS 2010中的所有“Web Publish”功能(在VS2012中更是如此)都基于MSDeploy。 - Richard Szalay

3
我最近开始实施部署管道,并且我发现以下链接非常有用:
MSBuild命令用于持续集成: http://www.troyhunt.com/2010/11/you-deploying-it-wrong-teamcity_24.html WebDeploy同步命令,我用于将部署包部署到生产服务器: http://sedodream.com/2012/08/20/WebDeployMSDeployHowToSyncAFolder.aspx 另外,我使用了这些参考资料:
dnrtv.com上关于MSBuild的视频
微软出版社的书籍《Inside the Microsoft® Build Engine: Using MSBuild and Team Foundation Build》,您可以从Oreilly购买PDF版本。
最后,“持续交付”一书为我提供了有关部署管道的好想法,尽管该书并不着重于MSDeploy,但确实值得阅读。

@AustinHenley 在你评论之前,我更喜欢这个答案。这个答案为一项文档不足且难以学习的技术添加了许多有价值的信息。 - bwerks

3
虽然有些粗糙,但我开始非常喜欢 MSDeploy。在农场中使用它同步 Web 服务器非常有用,因为它高效(仅复制更改)并且除了内容文件外还处理实际的 IIS 设置。看起来 MSDeploy 是各种场景和用途的基础模块。此外,如前所述,.NET 4 中有 MSDeploy 的 MSBuild 任务。我已经利用这个 MSBuild 任务使得从 TeamCity 部署我的 Web 应用程序变得非常容易。我在这里写了博客:
Web Deploy (MS Deploy) from TeamCity - http://www.geekytidbits.com/web-deploy-ms-deploy-from-teamcity/

1

文档的陈述典型地体现了 MSFT 1.0 产品的特点,不幸的是 MSDN 不再有专门的开发技术工程师来填补这些空白——相反,人们盲目地相信网络会提供这些信息。

我正在考虑擦拭我的写作技能,并撰写一本简短的电子书,因为很可能存在市场需求……


1

Msdeploy 绝对有 PowerShell 的特点:强大而不简单,而不是 worse is better

没有 Windows 的替代品,但您可以混合一些它的功能来进行自动化部署。例如:

  • 使用 Team City 和 msbuild 编译您的解决方案
  • 在构建服务器上使用 msdeploy 转换您的站点和 web.configs
  • 手动 FTP 您的站点 ZIP 文件(它不支持 FTP)
    • 或者,使用其远程部署功能。这需要打开端口 8172、进行大量安全更改,并且据我所知没有负载平衡的让步
  • 在实时站点上使用 msdeploy 同步更改

作为一个工具,它显然是面向服务提供商的,因为它是一个巨大的瑞士军刀。您可以用它做各种各样的 IIS 事情,这在很大程度上对于小企业来说都是过度杀伤力的。我没有大规模 IIS 设置的经验,所以也许那就是它的优势所在。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接