Я думаю, это зависит от того, что вы собираетесь делать с приложением. Если проект будет представлен другим разработчикам, я бы использовал одну из структур, описанных в других ответах. Однако, если это внутренний проект вашей организации, где у вас будет несколько проектов и разработчиков, мы надеемся, что все будут делиться библиотеками. Я хотел бы использовать что-то вроде этого, где библиотека содержит только DLL:
- Библиотека
- Проект 1
- Проект 2
Это структура, которую мы внедрили в процессе разработки. У нас есть несколько проектов, использующих разные версии одной и той же библиотеки. Мы можем очень легко перенести приложения в более новые версии библиотеки. Это также предотвращает создание семи копий DLL в семи разных проектах.
Для наших собственных внутренних библиотек код хранится в дереве проекта, а библиотеки DLL копируются в ветвь библиотеки. Наши проекты ссылаются на версии релиза.
Эта структура упрощает синхронизацию версий библиотек с открытым исходным кодом (например, Hibernate, Fluent NHibernate и NHibernate Linq).