Mono Cecil 添加缺少的程序集

Mono Cecil add missing assembly

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

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

有办法处理类似 AppDomain.CurrentDomain.AssemblyResolve 的事件,但对于 Mono.Cecil? 我可以手动加载丢失的程序集,但我不知道如何。
那么,如何为 Mono.Cecil 加载程序集?

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

要创建解析器,只需继承 BaseAssemblyResolver,例如:

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;
    }
}

就我而言,我在处理 .NET Core 3.1 项目时失踪了。

Install-Package Microsoft.Azure.WebJobs.Script.ExtensionsMetadataGenerator -Version 4.0.1

https://www.nuget.org/packages/Microsoft.Azure.WebJobs.Script.ExtensionsMetadataGenerator/