У нас есть аналогичная проблема, так как у нас есть 109 отдельных проектов. Для того, чтобы ответить на оригинальные вопросы, основанные на нашем опыте:
1. Как вам лучшие ссылки ручки между проектами
Мы используем опцию контекстного меню «Добавить ссылку». Если выбран «проект», то зависимость по умолчанию добавляется к нашему одиночному глобальному файлу решения.
2. Следует ли включать или отключать «копировать локальные»?
В нашем опыте. Дополнительное копирование просто добавляет к времени сборки.
3. Если каждый проект создания своей собственной папке или все должны они строить в ту же папку вывода (все они являются частью одного и того же приложения)
Все нашей продукции ставится в один папку под названием «bin». Идея состоит в том, что эта папка такая же, как при развертывании программного обеспечения. Это помогает предотвратить проблемы, возникающие, когда настройка разработчика отличается от настройки развертывания.
4. Есть ли папки решений, способные организовать материал?
Нет в нашем опыте. Структура папок одного человека - это чужой кошмар. Глубоко вложенные папки просто увеличивают время, необходимое для поиска чего-либо. Мы имеем абсолютно плоскую структуру, но называем наши файлы проектов, сборки и пространства имен одинаковыми.
Наш способ структурирования проектов основан на одном файле решения. Построение этого занимает много времени, даже если сами проекты не изменились. Чтобы помочь в этом, мы обычно создаем еще один файл решения «текущего рабочего набора». Любые проекты, над которыми мы работаем, добавляются к этому. Время сборки значительно улучшилось, хотя одна из проблем, которые мы видели, заключается в том, что Intellisense не подходит для типов, определенных в проектах, которые не находятся в текущем наборе.
Неполный пример нашего макета решения:
\bin
OurStuff.SLN
OurStuff.App.Administrator
OurStuff.App.Common
OurStuff.App.Installer.Database
OurStuff.App.MediaPlayer
OurStuff.App.Operator
OurStuff.App.Service.Gateway
OurStuff.App.Service.CollectionStation
OurStuff.App.ServiceLocalLauncher
OurStuff.App.StackTester
OurStuff.Auditing
OurStuff.Data
OurStuff.Database
OurStuff.Database.Constants
OurStuff.Database.ObjectModel
OurStuff.Device
OurStuff.Device.Messaging
OurStuff.Diagnostics
...
[etc]
Могу ли я спросить, почему для одного решения требуется более 100 проектов? Каждый из них создает свою собственную сборку? –
Да, они есть, и каждый из них представляет собой логически раздельную функциональность. – Eyvind
У нас есть аналогичная вещь в Java ...один каркас, около 200 плагинов. Помещает Eclipse на тест, когда все они загружаются, и держу пари, что это не так редко (хотя это академические круги, возможно, отличные от The Real World ™). – Joey