Это, как вы сказали, довольно большой вопрос. Вот некоторые из моих мыслей:
Развивающая среда
Прежде всего, когда я запускаю новый проект, я устанавливаю Sitecore в своей среде разработки и проверяю, все ли работает. Либо во время установки, либо после того, как я разместил базы данных на отдельном SQL-сервере и соответственно изменил строку подключения.
Я открываю Visual Studio, создаю решение и включаю необходимые файлы. Я создаю какой-то вид рендеринга HelloWorld и пытаюсь построить решение, чтобы убедиться, что все работает как надо.
Когда все работает, я создаю zip-файл всего решения, включая папку данных. Теперь пришло время добавить это в какую-то систему контроля версий, в моем случае Subversion.
Я добавляю zip-файл в Subversion, а также добавляю все файлы, которые, как мне кажется, будут изменены в ходе проекта, обычно я говорю Subversion игнорировать папку sitecore, это резко повышает производительность при проверке файлов.
После того, как я выполню коммит-действие, другие члены команды моего проекта могут проверить код и начать разработку (после разархивирования zip-файла, разумеется)
Мы все работаем над одной и той же базой данных, хотя это идет вразрез с рекомендациями Sitecore, у нас не было никаких проблем с этим подходом, однако элементы в GUI, созданные / измененные одним разработчиком, занимают некоторое время, прежде чем он будет создан / изменен для всех остальных.
Мы могли бы, конечно, разработать несколько разных проектов, используя одну и ту же установку Sitecore, но, поскольку почти все клиенты используют разные версии Sitecore, мы сочли этот подход несколько громоздким.
Часто мы настраиваем автоматизированный сервер сборки, но это совсем другая проблема.
Код многократного использования и визуализации
Я хотел бы сказать, что мы создаем аккуратные пакеты, основанные на той же кодовой базе, которая используется повторно между проектами, но, к сожалению, мы еще не там. Сегодня между решениями много разрыва и вставок.
Загрузка кода клиенту
Это делается с помощью пакетов sitecore, обычно с некоторым динамическим выбором файлов для включения, скажем, все ascx-файлы в определенной папке изменились за последние 5 дней.
Вот, пожалуйста.