您使用什么方法将ASP.Net应用程序部署到野外?

时间:2009-06-10 10:36:00

标签: asp.net deployment wix

目前,我们通过在本地发布网站并通过电子邮件将zip文件通过电子邮件发送给系统管理员来部署已编译的ASP.Net应用程序,并提供(通常)冗长的部署说明。这是因为我们第一次将ASP.Net应用程序部署到客户时,dev和测试IIS实例是相同的,我们无法将该站点两次部署到同一台机器上。这为所有后续项目的部署奠定了基调。

我现在正在评估我们的部署方法,我正在专门研究内置的部署工具;具体来说,我正在研究自定义安装任务,并尽可能多地使用标准安装程序功能(主要是用户界面)。

其次,我正在考虑合并部署和自动更新。

您如何在组织中部署软件?您使用了哪些工具,以及最常遇到的问题?

6 个答案:

答案 0 :(得分:3)

我们有专用的DEV,TEST,STAGE和PRODUCTION服务器。

我们还有一台运行Cruise Control的专用构建机器。

Cruise Control配置为持续集成构建,该构建在签入代码后运行。它还配置为单独的开发,QA,阶段和生产任务。

要部署到开发,首先从SVN检索并构建代码,然后将“预编译Web”文件夹复制到开发Web站点,并将Web服务项目复制到开发应用程序服务器。 Cruise Control还配置为在构建开始之前“标记”源代码,因此我们可以在以后重现构建,或者如果我们需要进行热修复,则从标记分支。

要部署到QA,文件将从开发计算机复制到QA计算机。

同样,要部署到Stage,文件将从QA计算机复制到Stage计算机。

最后,要部署到生产环境,文件将再次从Stage计算机复制到生产计算机。

要配置每个环境,我们有一个自定义工具,它是每个环境的Cruise Control任务的一部分,用于修改连接字符串,“debug = true | false”,“customErrors = Off | RemoteOnly”以及其他特定于环境的设置。

因此,可以使用Cruise Control仪表板上的按钮来部署每个环境。

有一点需要注意的是,我们目前在Cruise Control配置文件中配置了生产数据库密码...将其移动到其他地方会很不错!

最后,让我补充一点,即使我们的生产机器在专用托管设施中,也可以从我们的Cruise Control机器访问服务器,这使得生产部署非常容易。唯一的手动步骤是加密web.config文件并删除Cruise Control提供的“AppOffline.html”文件。

如果这有帮助,或者您有任何问题,请告诉我。

谢谢!

答案 1 :(得分:1)

1)使用MSBUILD构建项目

2)FTP文件到生产环境

3)手动复制/粘贴到每个Web服务器

答案 2 :(得分:0)

我所做的一些事情如下:

1)如果配置在环境之间发生变化,请使用Web部署项目来编译和清理构建以及处理web.config部分替换。 2)使用NAnt以重复的方式完成所有构建,存档和复制。

Web部署项目最终会创建一个可用于代替NAnt的MSBuild文件;但是,我来自Java背景并且一直使用Ant,所以NAnt是我在.Net中的首选。如果添加NAnt Contrib任务,您将不仅可以部署文件,还可以处理源控件等项目(如果它不是默认任务的一部分)和更改的Sql脚本执行。

目前我一起使用这两个选项。我有我的NAnt构建文件通过MSBuild调用Web部署项目。通过为每个环境设置配置管理器,它允许我自动管理web.config部分替换,并且仍然可以对我的复制和归档版本进行相当不错的控制。

希望这有帮助。

答案 3 :(得分:0)

我们使用Web部署项目和VS 2008项目从web部署&的输出创建.msi。其他的项目。一个名为“setup”的普通Windows应用程序用于执行大量的数据库创建和初步操作,而不是尝试使用自定义步骤自定义安装项目。与尝试自定义MS代码相比,这样做要容易得多。然后,此Windows应用程序将调用用户需要的正确.msi文件。

每天晚上都会运行团队基础构建来重建解决方案并将所有内容复制到“发布CD”目录中,任何人都可以访问该目录并对最新的“版本”进行测试。 老实说,对于像我们这样的小团队来说,TFS构建有点落伍,我只使用它,因为它是我习以为常的。

在以前的公司中我们使用了这个http://www.finalbuilder.com/,我可以推荐它以方便使用和支持的软件数量。

答案 4 :(得分:0)

对于Intranet网站,我们将CruiseControlSVN结合使用,以自动重建网站。

理论上,如果您可以将驱动器远程映射到客户端的Intranet,则可以通过VPN扩展此模型。或者更快速和肮脏的解决方案可能是使用SyncBack之类的工具来同步包含站点的已编译DLL的远程文件夹。

答案 5 :(得分:-2)

使用复制Web工具部署Web应用程序
来自Microsoft Training Kit的文本基于Web的开发 如果要向许多用户提供Web应用程序(例如,允许人们从Web下载并安装它),Web Setup Projects非常有用。如果您负责更新组织的特定网站,则每次进行更新时登录Web服务器并安装Windows Installer程序包都是不切实际的。对于内部应用程序,您可以直接在Web服务器上编辑Web应用程序。但是,您所做的更改会立即在生产Web应用程序中实现,这包括可能存在的任何错误。要使自己能够测试Web应用程序,可以在计算机上编辑Web应用程序的本地副本,并使用“复制Web”工具将更改发布到生产Web服务器。您还可以使用“复制Web”工具将更改从登台服务器发布到生产Web服务器或任何两个Web服务器之间。复制Web工具可以将单个文件或整个Web站点复制到源Web站点和远程Web站点。您还可以选择同步文件,这涉及仅复制已更改的文件并检测可能的版本控制冲突,其中源和远程站点上的相同文件已单独编辑。复制Web工具无法合并单个文件中的更改;只能复制完整的文件。