Я не уверен, о какой папке «общих сборок» вы говорите, но я не был бы слишком уверен, что Visual Studio действительно «понимает, что вашему приложению нужен Frank.dll» - я подозреваю, что это больше вероятно, что он копирует все сборки, которые он там находит. Что произойдет, если вы разместите несвязанную сборку там? Если бы вы могли более подробно узнать, где именно находятся, какой тип проекта вы создаете и как вы добавляете ссылку на Adam.dll, это поможет.
Я не знаю ни одного способа принудительного копирования зависимых сборок во всех ситуациях - потому что на самом деле может не потребоваться. Frank.dll может понадобиться, только если вы используете определенные функции Adam.dll, например.
Если какой-то тип в Адаме, который вы использовали, выставил тип из Frank в своем открытом API, , тогда компилятор выдаст вам ошибку - но, очевидно, вы не хотите добавлять биты в публичный API только для ударов.
Хотя я знаю, что это не тот ответ, который вы ищете, я думаю, что вам, возможно, придется просто ухмыльнуться и вынести это ... достаточно ли в вашем коде сложных зависимостей, что это действительно проблема? Скорее всего, вы тратите достаточно времени из-за отсутствия зависимостей, поэтому стоит попытаться придумать схему, чтобы «исправить» это? Вы могли бы написать программу, которая загрузила сборку вашего приложения, нашла все ее зависимости, а затем проверила их наличие - и рекурсивную. Предположительно, это будет игнорировать зависимости уже в GAC. Я просто не уверен, что это того стоит.