Использование 32-битной или 64-битной конкретной dll в зависимости от битности процесса

Мне нужно сослаться на DLL, которая доступна в двух версиях (одна для 32-битной и одна для 64-битной). Моя цель - создать веб-приложение, работающее как в 32-битных, так и в 64-битных системах.

Я думал о ссылке на 32-битную сборку по умолчанию и использовании события AssemblyResolve для загрузки 64-битной версии (если загрузка 32-битной версии завершилась неудачно):

static void Main(string[] args)
{
    AppDomain.CurrentDomain.AssemblyResolve += _AssemblyResolve;
    // Try LoadAssembly ...
}

static System.Reflection.Assembly _AssemblyResolve(object sender, ResolveEventArgs args)
{
    var path = string.Format(@"...\lib_x64\{0}.dll", args.Name);
    return Assembly.LoadFrom(path);
}

Но даже когда возникает исключение BadImageFormatException, обработчик _AssemblyResolve не вызывается. Есть ли другой способ добиться предложенного поведения?

6
задан ollifant 24 September 2011 в 11:37
поделиться

0 ответов

Другие вопросы по тегам:

Похожие вопросы: