Если сборка не найдена в GAC, то CLR будет искать ее по «пути проверки». Который по умолчанию является только каталогом, который содержит EXE. Он ищет только совпадение в имени сборки и прекращает поиск при первом совпадении.
Затем проверяется номер [AssemblyVersion]. Если он не совпадает, вы получите исключение, он не будет продолжать искать другую сборку с тем же именем. Всякий раз, когда у вас возникают проблемы с разрешением, вы можете использовать утилиту Fuslogvw.exe. Он точно показывает, где выглядел CLR и что пошло не так.