Ваша проблема очень похожа на ту, с которой я столкнулся при разработке плагина: Где Visual Studio ищет сборки? .
Я думаю, что вы должны прежде всего понять, где .NET ищет вашу сборку, и сравнить ее с той, которая уже загружена в ваш домен приложений. Это можно сделать с помощью ProcMon.exe, чтобы увидеть, где ваше приложение не может найти сборку, и посмотреть на свойство CodeBase ClientManager, которое можно найти в AppDomain.CurrentDomain.GetAssemblies ().
Я полагаю, что эти 2 пути будут разными, но трудно представить, почему ваше приложение ищет сборки в разных местах, не зная их.
В конце концов, я решил свою проблему с помощью события AssemblyResolve, просто найдя свою сборку в загруженных сборках и просто заново установив ее (не загружая снова).
Вот как я это сделал. Я не уверен, что он действительно аккуратный, поскольку он работает только потому, что не найденная сборка уже загружена:
AppDomain.CurrentDomain.AssemblyResolve += new ResolveEventHandler(CurrentDomain_AssemblyResolve);
static Assembly CurrentDomain_AssemblyResolve(object sender, ResolveEventArgs args)
{
foreach (Assembly anAssembly in AppDomain.CurrentDomain.GetAssemblies())
if (anAssembly.FullName == args.Name)
return anAssembly;
return null;
}