Website:
The Web Site project is compiled on the fly. You end up with a lot more DLL
files, which can be a pain. It also gives problems when you have pages or
controls in one directory that need to reference pages and controls in
another directory since the other directory may not be compiled into code
yet. Another problem can be in publishing.
If VS isn't told to re-use the
same names constantly, it will come up with new names for the dll files
generated by pages all the time. That can lead to having several close
copies of dlls containing the same class name, which will generate plenty of
errors. The Web Site project was introduced with VS 2005, but has turned out
not to be extremely popular.
Web Application:
The Web Application Project was created as an add-in and now exists as part
of SP 1 for VS 2005. The main differences are the Web Application Project
was designed to work similar to the Web projects that shipped with VS.net
and VS 2003. It will compile the application into a single dll at build
time. In order to update the project it must be recompiled and the dll
published for changes to occur.
Another nice feature of the Web Application
project is it's much easer to exclude files from the project view. In the
Web Site project, each file that you exclude is renamed with an exclude
keyword in the filename. In the Web Application Project, the project just
keeps track of which files to include/exclude from the project view without
renaming them, making things much tider.
Reference: http://www.megasolutions.net/AspNet/difference-between-Web-Site-and-Web-Application-Project-27210.aspx
This article also gives reasons on why to use one and not the other. Here is an excerpt of it:
- You need to migrate large Visual Studio .NET 2003 applications to VS
2005? use the Web Application project.
- You want to open and edit any directory as a Web project without
creating a project file? use Web Site
project.
- You need to add pre-build and post-build steps during compilation?
use Web Application project.
- You need to build a Web application using multiple Web
projects? use Web Application project.
- You want to generate one assembly for each page? use Web Site project.
- You prefer dynamic compilation and working on pages without building
entire site on each page view? use Web
Site project.
- You prefer single-page code model to code-behind model? use Web Site
project.