Mono Cecil добавить недостающую сборку
По какой-то причине, когда я пытаюсь загрузить какую-то сборку и проанализировать ее, я получаю ошибку Mono.Cecil.AssemblyResolutionException: Failed to resolve assembly...
Меня на самом деле не волнует, почему это исключение бросает, Я знаю, где находится недостающая сборка.
Есть способ получить что-то вроде AppDomain.CurrentDomain.AssemblyResolve
события, но для моно.Сесил?
Я могу вручную загрузить недостающую сборку, но не знаю, как это сделать.
Итак, как я могу загрузить сборку для Mono.Сесил?
1 ответ:
По-Видимому, Моно.Сесил это поддерживает. Когда вы загружаете сборку с
AssemblyDefinition.ReadAssembly
внутриReadParameters
, Вы можете изменить свойствоAssemblyResolver
на свой резольвер.Для создания решателя просто наследовать от
BaseAssemblyResolver
Как:private class CustomResolver : BaseAssemblyResolver { private DefaultAssemblyResolver _defaultResolver; public Resolver(string sourceDir) { _defaultResolver = new DefaultAssemblyResolver(); } public override AssemblyDefinition Resolve(AssemblyNameReference name) { AssemblyDefinition assembly; try { assembly = _defaultResolver.Resolve(name); } catch (AssemblyResolutionException ex) { assembly = ...; // Your resolve logic } return assembly; } }