代码之家  ›  专栏  ›  技术社区  ›  Rich

Team Foundation服务器是否能够正确地将.NET网站发布到远程服务器?

  •  5
  • Rich  · 技术社区  · 15 年前

    我们目前在我们的dev服务器上的Visual Studio 2010 Pro的C中构建我们的.NET网站,然后手动发布并上载到Live服务器,在该服务器上通过当前文件将其复制到Live服务器。

    我们希望尽可能地自动化这个过程,如果可能的话,在某个特定的时间,比如每天的午夜推动它。我们目前不使用任何源代码管理,因此这可能使它成为必需的…

    Team Foundation Server(TFS)是启用此方案的最佳解决方案吗?如果是这样的话,我们的客户要花多少钱,或者我们怎样才能知道?我们在英国,他们确实订阅了一份msdn。

    6 回复  |  直到 15 年前
        1
  •  6
  •   Community Mohan Dere    8 年前

    此时,你需要放慢脚步,设定更现实的目标。这是我最大的一面红旗:

    “我们目前没有使用任何来源 控制,所以这可能使它 不管怎样都是必不可少的……”

    如果没有适当的SCC,你就无法到达你需要去的地方。一个全面的TFS实现当然可以做你想做的事情,它有一些非常好的功能,可以用来集成自动化部署场景,这很好,但是在你学会运行之前,你真的需要学会走路。

    我已经 commented on TFS cost before ,所以我不会在本文中这样做,但足以说明,执行您想要的操作的TFS实现需要花费大量的精力,特别是如果您考虑到设置它和编写您想要的自动发布工作流的脚本所需的时间。

    我不知道你的预算是什么,你的团队有多大,你的发展战略的性质,或者一些可能改变我答案的事情,但是我假设你有一个有限的预算,没有专门的员工,你可以利用他们来建立一个一流的TFS实施,所以这里是我建议(按这个顺序!)

    • 使用诸如Subversion或Git之类的免费工具设置版本控制。对于一个刚开始使用scc的组织,我建议对git进行Subversion,因为从概念上讲,开始使用它要简单得多。这是你要做的每件事的基础。不像在2000磅炸弹上加引信或者组装自行车,我建议你读一下 manual 安装SVN之前和期间。

    • 使用msbuild生成生成文件。是的,您可以使用nant,但是msbuild在大多数情况下相当等价,如果您决定在遥远的将来朝这个方向发展,那么它对tfs就更友好了。确保您的构建在开发盒和服务器上正常工作。

    • 提出一个部署脚本。这很可能等同于msbuild文件中的目标。或者它可能是一个MSI文件——我对您的环境还不太了解,但根据您所说的将内容复制到生产环境的事实猜测,一个msbuild目标可能就足够了。

    • 设置持续集成服务器,如Hudson或CruiseControl.net。我个人使用CruiseControl,但这两者背后的基本思想都是自动化服务,它们监视您的SCC系统的变化并为您执行构建。如果已经设置了一个msbuild目标来执行部署,那么也可以在ccnet(或者可能是hudson)中配置一个“项目”来执行部署。

    这些解决方案的软件总成本是0美元,但您可能会面临一个很大的学习曲线。TFS的学习曲线imo甚至更陡,软件成本绝对在0美元以上。不管是哪种方式,外卖并不是一次就把它一块咬掉,否则你可能会失败。一步一步地走,你就到了。玩得开心!我个人喜欢学习所有这些东西!

        2
  •  4
  •   MrHinsh - Martin Hinshelwood    15 年前

    如果您的客户端有msdn,那么tfs是免费的!

    如果您拥有msdn-professional、permium或Ultimate,则可以同时获得访问任何tfs服务器的CAL和在生产环境中运行tfs服务器的许可证。您只需要确保所有用户都有msdn。如果他们不这样做,那么你可以花500美元购买一个retial-tfs许可证,允许前5个用户无需CAL。然后,您可以为需要访问数据的用户添加比msdn便宜的CAL包。如果您的内部用户只需要访问他们创建的工作项,那么他们也可以自由访问。

    只要启动构建的人有一个msdn许可证,您的构建服务器也是免费的。你可以有迪恩描述的序列,但我建议给最终的建设者一点现金,并用它来定制流程。它很好地集成到TFS中,并提供了一个很好的用户界面。

    其优点是,您可以在一个产品中部署所有记录、审核和可报告的开发人员->测试->…

    http://www.finalbuilder.com/download.aspx

        3
  •  2
  •   Dean Johnston    15 年前

    听起来像是在追求一个持续集成(构建)服务器。 我在.NET中经常使用的是 Hudson .

    您可以通过许多触发器(如在特定时间)启动构建,并可以按顺序运行各种步骤。其中包括运行批处理命令(Windows或Linux,具体取决于运行它的平台)或运行MS Build。它有很多插件,支持大多数主要工具。

    我们构建的应用程序的一个常见序列是:

    • 从源代码管理更新(但这并不意味着您不能执行类似从文件共享中获取副本的操作)
    • 使用msbuild编译
    • 使用nunit运行单元测试
    • 已将生成的项目部署到测试服务器
        4
  •  2
  •   Ryan Cromwell    15 年前

    通过设置一个执行Web应用程序的部署目标的生成,TFS team build当然能够执行您希望的操作。关键是MSDeploy,它实际上可以以多种方式执行,并且不依赖于任何一种工具。您可以简单地安排一个任务来执行msdeploy。

    有关详细信息,请参见以下两个链接:

    http://weblogs.asp.net/scottgu/archive/2010/07/29/vs-2010-web-deployment.aspx

    http://www.hanselman.com/blog/WebDeploymentMadeAwesomeIfYoureUsingXCopyYoureDoingItWrong.aspx?utm_source=feedburner&utm_medium=feed&utm_campaign=Feed:+ScottHanselman+(Scott+Hanselman+-+ComputerZen.com)

    在TFS 2010中,使用基于Windows工作流的新构建系统可以做很多非常酷的事情。学习定制构建过程模板是一项有价值的投资。

        5
  •  0
  •   ajay_whiz    15 年前

    好吧,团队TFS是最终的解决方案。但是,为了降低成本,可以使用msbuild来完成任务。可以创建一个Windows调度程序,该调度程序在特定时间触发msbuild。有一个开源的msbuild任务可用于 http://msbuildtasks.tigris.org/ 甚至可以通过ftp上传文件

        6
  •  0
  •   Afshar Mohebi    15 年前

    您需要进行持续集成。TFS 2010完全能够为您做到这一点。但在继续之前,您应该将源代码移动到TFS源代码管理。我们做的和您需要的一样:我们的所有源都驻留在TFS中,每次签入时,都会在构建服务器中发生一个构建,然后部署到远程实时服务器。