2017-06-13 8 views
1

Aus irgendeinem Grund fehlt, wenn ich versuchen, einige Assembly zu laden und zu analysieren, erhalte ich Fehler Mono.Cecil.AssemblyResolutionException: Failed to resolve assembly...Mono Cecil hinzufügen Montage

ich wirklich nicht egal, warum diese Ausnahme werfen, ich weiß, wo das fehlt Versammlung.

Es gibt einen Weg zu etwas wie AppDomain.CurrentDomain.AssemblyResolve Ereignis aber für Mono.Cecil? Ich kann die fehlende Baugruppe manuell laden, aber ich weiß nicht wie.
Also, wie kann ich eine Baugruppe für Mono.Cecil laden?

Antwort

1

Anscheinend unterstützt Mono.Cecil das. Wenn Sie die Baugruppe mit AssemblyDefinition.ReadAssembly in die ReadParameters laden, können Sie die Eigenschaft AssemblyResolver in Ihren Resolver ändern.

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

Um einen Resolver erben nur von BaseAssemblyResolver wie zu erstellen