При создании веб-проекта Visual Studio генерирует набор дополнительных файлов, включая пользовательские файлы проекта с расширением .csproj, a также файл решения с расширением .sln. При компоновке приложения Visual Studio генерирует временные файлы, которые размещает в подкаталоге Obj, и один или более .pdb-файлов с отладочными символами, которые размещает в подкаталоге Bin. Ни один из этих файлов не должен развертываться на веб-сервере, когда веб-приложение будет готово.

Более того, также не должны развертываться и файлы исходного кода на C# (с расширением .cs), поскольку Visual Studio предварительно компилирует их в DLL-сборку.

На первый взгляд предварительная компиляция веб-проектов кажется большим преимуществом, ведь она не только гарантирует отсутствие необходимости в компилировании страниц при первом запросе, но и также позволяет избегать развертывания исходного кода на веб-сервере. Однако беспроектные веб-сайты можно так же легко компилировать для развертывания: необходимо всего лишь воспользоваться соответствующим инструментом предварительной компиляции.

У основанной на проектах разработки имеется свой круг почитателей. Ниже перечислены наиболее важные преимущества веб-проектов:

Система проектной разработки является более строгой, чем система беспроектной разработки. Дело в том, что в файле проекта явно перечислены все файлы, которые должны входить в проект. Это позволяет перехватывать вероятные ошибки (вроде недостающих файлов) и даже анализировать возможные варианты атак (вроде добавления злонамеренным пользователем нежелательных файлов).

Веб-проекты предусматривают больше возможностей для управления файлами. Одним из примеров может служить случай, когда создается несколько проектов, и все они размещаются в подкаталогах внутри одного и того же виртуального каталога. При таком сценарии получается, что файлы хранятся отдельно для целей разработки, но при этом по сути все равно являются частью одного и того же приложения для развертывания. В случае беспроектной разработки возможность размещать файлы отдельно в таких подкаталогах отсутствует.

По этой же причине веб-проекты может быть эффективнее применять и при создании веб-приложения, использующего огромное количество файлов ресурсов, например, веб-сайта, включающего подкаталог Images с тысячами различных изображений. При беспроектной разработке Visual Studio обнаружит эти файлы и добавит их в окно Solution Explorer, поскольку они будут являться частью каталога веб-сайта. В случае веб-проекта таких дополнительных накладных расходов удастся избежать, потому что явно добавлять эти рисунки в список файлов проекта вы не будете.

Веб-проекты предусматривают возможность настройки процесса развертывания. Файлы проектов Visual Studio работают со средством веб-пакетов, которое предоставляет дополнительные возможности для конфигурирования развертываемой версии приложения.

Веб-проекты работают лучше в некоторых сценариях миграции. Любое веб-приложение, которое создавалось с помощью Visual Studio 2003 или более ранней версии, представляет собой веб-проект, поскольку в этих версиях Visual Studio не было возможности создавать веб-сайты без использования проектов. Открытие такого веб-проекта в Visual Studio 2010 приводит к запуску мастера миграции для преобразования этого приложения в веб-проект Visual Studio 2010.

Доступные функциональные возможности ASP.NET как при беспроектной, так и при основанной на проектах разработке выглядят одинаково. Более того, показатели производительности и в том, и в другом случае тоже ничем не отличаются. Так какой же вариант лучше выбирать при создании нового веб-сайта ASP.NET? У каждого подхода имеются свои сторонники.

Официально Microsoft рекомендует пользоваться более простой моделью веб-сайта во всех случаях, кроме тех, когда существует серьезная причина применять веб-проект. К числу таких случаев относятся ситуации, когда было разработано специальное расширение MSBuild, когда уже имеется готовый тщательно автоматизированный процесс.