2012-06-10 13 views
5

Używam Mono.Cecil 0.9.5.3, a po zainstalowaniu VS2012 RC (co powoduje, że system .NET 4.0 System.XML.DLL zostanie zastąpiony przez jego odpowiednik .NET 4.5), otrzymam wyjątek System.ArugmentException w niektórych kodach iteruje atrybuty niestandardowe poszczególnych metod. Wygląda na to, że w niektórych przypadkach argument ctor atrybutu AsyncStateMachine, który powinien być typem, jest pusty.Wyjątek Mono.Cecil zgłaszany podczas analizowania biblioteki DLL System.Xml w wersji 4.5 systemu .NET 4.5, dlaczego?

Poniższy kawałek kodu odtwarza go:

string path = Assembly.Load("System.Xml, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089").Location; 

AssemblyDefinition systemXmlAssembly = AssemblyDefinition.ReadAssembly(path); 

var query = 

    from ModuleDefinition module in systemXmlAssembly.Modules 
    from TypeDefinition td in module.Types 
    from MethodDefinition method in td.Methods 
    from CustomAttribute att in method.CustomAttributes 
    where method.Name == "System.Xml.IDtdParser.ParseInternalDtdAsync" && 
      att.AttributeType.Name == "AsyncStateMachineAttribute" 
    select att; 

CustomAttribute attribute = query.Single(); 

var args = attribute.ConstructorArguments; // <---- this line throws an ArgumentException 

jest wyjątek od

Mono.Cecil.ModuleDefinition.CheckFullName(string fullName = "") 

Moje pytanie jest - jest to błąd w Mono.Cecil lub System.Xml. DLL? Czy specyfikacja pozwala na pojawienie się "pustego" typu jako argumentu ctor?

Odpowiedz

10

Wygląda jak błąd w Cecil do mnie, w tym sensie, że Cecil powinien to przeczytać bez awarii.

Czy możesz zgłosić błąd na https://github.com/jbevain/cecil i przesłać plik 4.5 System.XML.dll? Popatrzę wtedy i zgłoś, czy jest to rzeczywisty problem Cecil, czy źle zakodowany atrybut niestandardowy w System.XML.

Aktualizacja:

To rzeczywiście problem z Cecil. Jest teraz naprawiony w master. Będziesz musiał sam zbudować Cecil, dopóki nie zostanie wydany nowy pakiet nuget. Dzięki!

+0

Sporządzono w https://github.com/jbevain/cecil/issues/102 Dziękuję bardzo! –

+0

@OmerRaviv naprawiony, dzięki za zgłoszenie tego problemu! –

Powiązane problemy