В настоящее время я использую следующий код:
AppDomain.CurrentDomain.AssemblyResolve += (sender, args) => {
var name = args.Name + ".dll";
using (var input = Assembly.GetExecutingAssembly()
.GetManifestResourceStream(name)) {
Assembly dll = input != null
? Assembly.Load(input.ToArray())
: null;
return dll;
}
};
Во всех случаях локально это работает нормально, однако у одного клиента возникают проблемы с загрузкой включенных библиотек (у них нет доступа к исходному коду)).
Есть ли какие-либо проблемы с доверием или ошибки, о которых мне следует знать при использовании этого типа динамической загрузки DLL?
Проблемы среднего доверия не кажутся проблемой, однако нашиВ конечном итоге DLL требует полного доверия.Я предполагаю, что это может быть связано с разрешениями безопасности или чем-то в этом роде.
Обновление
После просмотра документов я снова заметил одну строку, которую пропустил раньше, и я думаю, что она связана с моейпроблема.
"Начиная с .NET Framework 4, событие ResolveEventHandler вызывается для всех сборок , включая сборки ресурсов. В более ранних версиях событие не вызывалось для сборок ресурсов. Еслиоперационная система локализована, обработчик может вызываться несколько раз: по одному разу для каждой культуры в резервной цепочке. "
Тогда как в 3.5 это не было.Я опубликую обновленную информацию после подтверждения.