Я только что прошел это ...
Мы получили от поставщика около 53 различных файлов решения VS2005 C #, которые создали 63 различных DLL-файла проекта, каждый из которых вызывается отдельным коммерческим приложением.
Все проекты содержали ссылки на файлы в библиотеках других проектов.
Проблемы с этим подходом были велики: почти невозможно было создать зависимости между решениями, включая lot команд "findstr"; функциональность «найти определение» в VS не найдет источник для DLL-файлов, на которые ссылаются файлы, а только покажет определения функций внутри библиотек; восстановление из-за изменений было подвержено ошибкам, обременительно и требовало открытия множества различных решений для повторного построения всего набора DLL.
Я потратил недели на объединение 53 различных файлов решений в один, а затем потратил дополнительное время на изменение всех файловых зависимостей на зависимости проекта. Теперь, когда вы «нашли определение», вы попадаете в исходный файл. Теперь, когда вы изменяете проект низкого уровня, все зависимые проекты будут создаваться при создании (одного) решения.
Я сделал несколько дополнительных изменений, но самым удобным было установить для всех каталогов сборок отдельных проектов значение solutiondir / bin. Таким образом, все библиотеки оказываются в одном месте.
О да: я также установил «копировать локальный» в «нет» для всех dll всех упомянутых проектов. Таким образом, каждая dll отображается в solutiondir / bin при сборке проекта и обнаруживается в следующих проектах для сборки.
Единственная проблема, с которой мы столкнулись сейчас, заключается в том, что если я изменю проект, который используется в качестве источника данных для другого проекта с помощью формы Windows, то форма Windows не откроется в Designer, пока я не перестрою проект, который является источником данных для форма. Маленькая, маленькая цена, чтобы заплатить за все преимущества ссылок на проекты. Кроме того, я должен построить решение после извлечения из SVN, потому что DLL не находятся в SVN. В приведенном выше случае источник данных .dll не найден для Designer.