Примечание. Это для магазина, который работает на С++, С++/CLI и С#, а некоторые продукты поставляются в виде комбинации из всех трех.
В настоящее время мы имеем правило, что проект должен иметь одно и только одно содержащее решение. Правило было первоначально установлено, потому что модуль управления версиями для Visual Studio не смог справиться с проектами, содержащимися в нескольких решениях, всегда пытаясь изменить привязки управления источником при переходе от одного решения к другому.
По другим причинам мы прекратим использование плагина управления версиями вообще (не отбрасывая контроль источника, а только подключенный к мозгу плагин). Он вновь открывает вопрос о том, следует ли продолжать политику ограничения проектов, содержащихся только в одном решении.
У нас довольно много кода в библиотеках, dll и сборках, которые потребляются множеством поставляемых продуктов, и в настоящее время мы контролируем это с помощью системы управления зависимостями между решениями, в результате чего, если вы работаете в решении для конца -product, просто запросить сборку зависимых решений, которая запускает другие экземпляры Visual Studio для их создания. Система работает, но имеет следующие недостатки:
- Решения для общих проектов часто бывают слишком жирными, что содержит несколько проектов, необходимых для разрабатываемого продукта и обычно намного больше, которые не нужны для разработки. Они просто были объединены в своеобразное решение, которое охватывает все проекты, которые просто связаны друг с другом. Это приводит к увеличению времени сборки из-за компиляции ненужного кода.
- В тех случаях, когда мы пытались решить вышеуказанные жирные решения, мы часто оставляем слишком тощее решение, которое содержит только один проект. Для каждого из них требуется дополнительная конфигурация в системе управления зависимостями между решениями. Это также может увеличить время сборки, поскольку несколько экземпляров Visual Studio развернуты.
Я рассматриваю возможность пересмотра политики, чтобы проект, используемый в нескольких поставляемых продуктах, содержался в нескольких решениях. Мы могли бы устранить управление зависимостями между решениями и значительно сократить количество решений (вплоть до одного продукта). Меня беспокоит объем работы, которую эта реорганизация возьмет, и будет ли это целесообразно. Боюсь, я даже не смогу обнаружить потенциальные выгоды, пока команда не работает с ним некоторое время. Я также предвижу пару потенциальных проблем, которые являются истинными вопросами здесь.
- Разве большое количество проектов в одном решении создает проблемы стабильности в Visual Studio 2005 (наша текущая платформа разработки)? Получается ли он лучше в VS 2008 или VS 2010?
- Если проект содержится в нескольких решениях, как можно управлять эффектами для нескольких решений, следует ли модифицировать конфигурации проекта (например, добавить новую конфигурацию)?
Для тех, кто уже работает в среде с одним решением на один продукт, с общими компонентами, как проекты, содержащиеся в нескольких решениях: возникли ли у вас какие-либо существенные недостатки в такой конфигурации?