当我在 Visual Studio 中启动一个新的 ASP.NET 项目时,我可以创建一个 ASP.NET Web 应用程序或者我可以创建一个 ASP.NET 网站。
ASP.NET Web 应用程序和 ASP.NET 网站有什么区别?为什么我会选择一个而不是另一个?
答案是否会根据我使用的 Visual Studio 版本而有所不同?
网站项目是即时编译的 。 你最终会得到更多的 DLL 文件,这可能会很痛苦。当您在一个目录中有页面或控件需要引用另一个目录中的页面和控件时,它也会出现问题,因为另一个目录可能尚未编译到代码中。另一个问题可能是出版。
如果 Visual Studio 没有被告知要不断地重复使用相同的名称,它将一直为页面生成的 DLL 文件提供新名称。这可能导致有多个包含相同类名的 DLL 文件的紧密副本,这将产生大量错误。Web Site 项目是随 Visual Studio 2005 引入的,但事实证明它并不流行。
Web 应用程序 项目是作为插件创建的,现在作为 Visual Studio 2005 SP 1 的一部分存在。主要区别在于 Web 应用程序项目的设计与 Visual Studio 2003 附带的 Web 项目类似。它将在构建时将应用程序编译成单个 DLL 文件。要更新项目,必须重新编译并发布 DLL 文件以进行更改。
Web 应用程序项目的另一个不错的特性是从项目视图中排除文件要容易得多。在网站项目中,您排除的每个文件都使用文件名中的排除关键字重命名。在 Web 应用程序项目中,该项目只跟踪从项目视图中包含/排除哪些文件,而不重命名它们,使事情变得更加整洁。
参考
文章 ASP.NET 2.0 - 网站与 Web 应用程序项目 也给出了为什么使用一个而不是另一个的原因。这是它的摘录:
您需要将大型 Visual Studio .NET 2003 应用程序迁移到 VS 2005 吗? 使用 Web 应用程序项目。 您想在不创建项目文件的情况下将任何目录作为 Web 项目打开和编辑吗? 使用网站项目。 您需要在编译期间添加预构建和构建后步骤吗? 使用 Web 应用程序项目。 您需要使用多个 Web 项目构建一个 Web 应用程序吗? 使用 Web 应用程序项目。 您想为每一页生成一个程序集吗? 使用网站项目。 您更喜欢动态编译和处理页面而不在每个页面视图上构建整个站点? 使用网站项目。 您更喜欢单页代码模型而不是代码隐藏模型? 使用网站项目。
Web 应用程序项目与网站项目 (MSDN) 解释了网站和 Web 应用程序项目之间的差异。此外,它还讨论了要在 Visual Studio 中进行的配置。