Я недавно ударился головой о кирпичную стену, пытаясь решить очень похожую проблему. У меня есть DLL, которую я хочу загрузить во время выполнения, и у нее есть свои зависимости. Я не мог понять, почему он загружается, но при вызове конструктора класса в загруженной сборке ошибка не возникает, а выполнение просто останавливается, и вы задаетесь вопросом, что происходит.
Оказывается, что зависимость загруженной сборки была в другой версии .NET, и в этом коде есть App.Config для включения сборок в смешанном режиме. Поэтому мне, естественно, пришлось внести это и в мой код, так как я вызываю сборку, которая вызывает сборку в другой версии .NET.
Ошибка не появлялась, пока я не скопировал все библиотеки DLL зависимостей в мое приложение в разработке. Теперь я могу удалить их снова! При этом я получаю предупреждающее сообщение DLL Loader Lock. Если я подавляю или игнорирую это, мой код работает.
В моем случае разрешение было:
<?xml version="1.0"?>
<configuration>
<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v4.0"/>
</startup>
</configuration>