2016-05-27 18 views
0

Assembly.write Methode löst den folgenden FehlerIch mag Typen von einem anderen Baugruppe in aktuelle Modul importieren Mono.Cecil mit

Mitglied ‚XXX.LoggingAspectAttribute‘ in einem anderen Modul deklariert und muss

importiert werden ive enthielt die folgenden Zeilen in meinem Code

var type = _module.Import(typeof(LoggingAspectAttribute)); 
_module.Import(type.Resolve().Methods.First(m => m.Name == "OnExecute")); 
_module.Import(type.Resolve().Methods.First(m => m.Name == "OnException")); 
_module.Import(type.Resolve().Methods.First(m => m.Name == "OnComplete")); 
_module.Import(typeof(LoggingAspectAttribute)).Resolve(); 

wo Modul als das Hauptmodul der Baugruppe definiert ist

_module = ModuleDefinition.ReadModule(filename, new ReaderParameters() 
     { 
      ReadSymbols = true 
     }); 

Haben Sie Ideen, wie Sie diesen Fehler beheben können?

+1

Hier ist ein Benutzer mit einem ähnlichen Problem mit Mono.Cecil: http://stackoverflow.com/questions/34879710/member-is-declared-in-another-module-and -Notwendigkeiten, die importiert werden sollen. – Ash

+0

Es ist nicht klar von dieser Frage, was die Lösung für mein Problem ist. –

+0

@VasudhaGupta versuchen, die letzte Zeile '_module.Import (typeof (LoggingAspectAttribute)) zu entfernen. Resolve();' –

Antwort

0

ModuleDefinition.Import() importiert nichts in das Modul, es gibt lediglich einen Verweis auf die Metadaten aus der Sicht des Moduls zurück.

Try this:

TypeReference type = _module.Import(typeof(LoggingAspectAttribute)); 
MethodReference onExecute = _module.Import(typeof(LoggingAspectAttribute).GetMethod("OnExecute")); 
MethodReference onException = _module.Import(typeof(LoggingAspectAttribute).GetMethod("OnException")); 
MethodReference onComplete = _module.Import(typeof(LoggingAspectAttribute).GetMethod("OnComplete"));