Mono Cecil 添加缺少的程序集

nro*_*fis 3 .net c# .net-assembly mono.cecil

出于某种原因,当我尝试加载一些程序集并对其进行分析时,出现错误 Mono.Cecil.AssemblyResolutionException: Failed to resolve assembly...

我真的不在乎为什么会抛出这个异常,我知道缺少的程序集在哪里。

除了AppDomain.CurrentDomain.AssemblyResolveMono.Cecil 之外,还有一种方法可以处理诸如事件之类的事情吗?我可以手动加载丢失的程序集,但我不知道如何加载。
那么,如何为 Mono.Cecil 加载程序集?

nro*_*fis 7

显然 Mono.Cecil 支持这一点。当您在AssemblyDefinition.ReadAssembly里面加载程序集时,ReadParameters您可以将AssemblyResolver属性更改为您的解析器。

要创建解析器,只需从BaseAssemblyResolverlike继承:

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;
    }
}
Run Code Online (Sandbox Code Playgroud)