Я бы предложил, чтобы у каждого проекта была папка зависимостей, содержащая соответствующие библиотеки, необходимые для каждого проекта. Когда проект, от которого зависит, создается, вы можете автоматически обновлять dll в папке зависимостей или нет через процесс сборки (круиз-контроль / nant / msbuild?). Тем не менее, я бы также подумал о развертывании версий зависимых от DLL на случай, если вы взорвете зависимые проекты использования этой библиотеки DLL. Для кого-то было бы неприятно обновить свой проект (в зависимости от проекта), запустить сборку, развернуть вывод своей сборки в зависимый проект) только для того, чтобы сломать проект, опирающийся на свою кодовую базу. Это звучит как хрупкий способ управления зависимостями.