For some reason when I try to load some assembly and analyze it, I'm getting error Mono.Cecil.AssemblyResolutionException: Failed to resolve assembly...
I don't really care about why this exception throw, I know where is the missing assembly.
There is a way to some something like AppDomain.CurrentDomain.AssemblyResolve
event but for Mono.Cecil?
I can manually load the missing assembly but I don't know how.
So, how can I load an assembly for Mono.Cecil?
Apparently Mono.Cecil support that.
When you load the Assembly with AssemblyDefinition.ReadAssembly
inside the ReadParameters
you can change the AssemblyResolver
property to your resolver.
To create a resolver just inherit from BaseAssemblyResolver
like:
private class CustomResolver : BaseAssemblyResolver
{
private DefaultAssemblyResolver _defaultResolver;
public CustomResolver()
{
_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;
}
}