Вторая копия сборки действительно загружается в память как есть.
Экземпляр типа во время выполнения специфичен для экземпляра загруженной сборки, поэтому даже если тот же файл DLL загружается во второй раз, типы не считаются совпадающими.
Это типичная проблема, когда «DLLHell» расширяется до «GACAndDLLHell». "GACONLYHeaven" - лучшее место ...:).
То, что имена файлов слегка различаются (расширение .DLL имеет другой регистр) подразумевает, что одна и та же DLL загружается из двух мест (то есть: GAC нечувствителен к регистру / всегда в нижнем регистре для имен файлов IIRC).
Здесь вам нужен абстрактный класс или, предпочтительно, интерфейс.
Если вы не можете вносить изменения в базу кода, я бы, во-первых, убедился, что DLL существует только в 1 месте на диске (или в 0 местах на диске, если он загружается из GAC). Копия библиотеки DLL, которая содержит тип: 'CompiledTemplate' в вашей папке app / bin, будет настоящим виновником ...?
Это новый код или существующий код, который по какой-то причине сейчас не работает?