对我个人而言立即回滚是最重要的。在追踪变化时,网站项目再次非常困难。
你可以找到一个很好的详细比较here。我在这里复制这篇文章。
1)部署。如果你需要就地部署,这个模型是完美的。但是,由于您以明文形式显示您的逻辑,因此不推荐。所以,任何有权访问物理服务器的人都可能会弄乱你的代码,你永远不会注意到这一点。你可以尝试做预编译的网站,但是你会得到很多dll和几乎不可触及的aspx文件。微软认识到这一限制并发布了Web部署项目工具。
2)您需要跟踪您在本地更改的内容以及上传到生产服务器的内容。没有版本控制。Visual Studio具有Web Copy工具,但该工具无法提供帮助。我不得不建立自己的工具,它可以跟踪基于Visual Source Safe的变更。
3)当您按F5进行调试执行时,只需2分钟即可编译并执行整个项目。当然你可以附加调试器到现有的线程,但这不是一个明显的解决方案。 4)如果你试图在飞行中产生控制,你将会遇到第一个无法解决的限制。如何引用其他页面和控件。页面和控件编译发生在每个目录的基础上。在最好的情况下,你将获得每个目录的汇编,最糟糕的情况是每个页面或控件都将获得它自己的程序集。如果您需要从控件或其他页面引用另一个页面,则需要使用@Reference指令显式地将其导入。
所以对于,
customControl = this.LoadControl( “〜/控制/ CustomUserControl.ascx”)作为CustomUserControl;
你需要,
但是,如果你想真正动态添加的东西,不能把所有适当@Reference指令是什么?或者如果你正在创建服务器控制并且它没有ascx文件,那么你没有@Reference的地方?由于每个控件都有自己的组件,因此几乎不可能做反射。
重新出现在Visual Studio 2005 SP1中的Web应用程序项目。他们解决了上述所有问题。
1)部署。每个项目只有一个dll。您可以创建可重新分发的包和可重复的构建。您可以进行版本控制和构建脚本。
2)如果你在代码后面做了代码,你可以只上传一个dll。如果您更改了aspx,则可以上传aspx更改。
3)执行最多需要2-3秒。
4)整个项目在一个程序集中,这有助于引用任何页面或控件。结论。对于任何一种严肃的工作,你应该使用Web应用程序项目。特别感谢Rick Strahl在ASP.NET 2.0中的精彩文章Compilation and Deployment。
Rick Strahl文章:http://www.west-wind.com/presentations/AspNetCompilation/AspNetCompilation.asp – Nick
Web应用程序项目没有首先出现在VS 2005 SP1中。他们是VS 2003的主要开发模式。在MS推出网站模型之后,开发人员社区出现了这样一个负面反应,他们必须做出回应,并将其重新引入到VS 2005的SP中: http://www.codersbarn.com/post/2008/06/01/ASPNET-Web-Site-versus-Web-Application-Project.aspx – IrishChieftain
@IrishChieftain:+1并编辑我的答案。 – Mahin