Это ответ на ваш комментарий к первому ответу («Есть ли у кого-нибудь еще возможные решения?») ...
Да, есть очень простое решение, и оно исходит из того же источника, который вызывает «проблему» (спойлер ... это System.AppDomain). В классе AppDomain есть событие с именем AssemblyResolve, на которое вы можете ответить (используйте AppDomain.CurrentDomain, чтобы получить «ваш» экземпляр AppDomain). Событие предоставит вам имя (строку) сборки, которую он не может найти. Я предполагаю, что вы знаете местоположение рассматриваемых сборок, поэтому просто используйте System.Reflection.Assembly.Load (pathToYourAssembly), чтобы загрузить сборку, а затем вернуть экземпляр сборки, который возвращает метод «Load». Обработчик событий AssemblyResolve немного отличается. Он имеет тип возврата, поэтому в вашем обработчике событий вы будете выполнять «return thisAssembly;» где thisAssembly - возвращаемое значение метода Load. AppDomain также имеет событие TypeResolve (и другие) на случай, если он не может найти тип в сборке, в которой он «должен быть». Это может произойти, если вы переместили тип из одной сборки в другую и не перекомпилировали все остальное, на которое ссылается этот тип. Во всяком случае, надеюсь, что это помогает кому-то. Я знаю, что это старый вопрос.