Если обе сборки имеют строгое имя (подписано), CLR всегда будет загружаться из GAC.
Вот шаги, которые среда выполнения использует для разрешения ссылок на сборки (из Как среда выполнения находит сборки ):
Определяет правильную версию сборки путем изучения применимых
файлы конфигурации, включая
файл конфигурации приложения,
файл политики издателя и машина
конфигурационный файл. Если
Файл конфигурации находится на
удаленная машина, время выполнения должно
найдите и скачайте приложение
Сначала файл конфигурации.
Проверяет, было ли ранее связано имя сборки и, если да,
использует ранее загруженную сборку.
Если предыдущий запрос на загрузку
сборка не удалась, запрос не выполнен
сразу, не пытаясь загрузить
Ассамблея.
Проверяет глобальный кеш сборок. Если там находится сборка,
среда выполнения использует эту сборку.
Зонды для сборки (... некоторые материалы опущены ...)
Как указано далее в той же статье:
Нет проверки версий для сборок без строгих имен, а также среда выполнения
проверьте в глобальном кэше сборок сборки без строгих имен.
Так что, если вы можете позволить себе удалить подпись из локальной сборки, приложение будет использовать ее вместо той, что в GAC.
Более подробную информацию о механизмах привязки во время выполнения, чем вы, возможно, могли бы ожидать, см. В блоге Сюзанны Кук .
Эта запись в блоге Скотта Хансельмана также дает отличный обзор процесса переплета.