मैं मोनो.सीसिल 0.9.5.3 का उपयोग कर रहा हूं, और वीएस2012 आरसी स्थापित करने के बाद (जो .NET 4.0 System.XML.DLL को अपने .NET 4.5 समकक्ष के साथ प्रतिस्थापित करने का कारण बनता है), मुझे एक सिस्टम मिलता है। कुछ कोड में ऑर्गमेंट अपवाद जो प्रत्येक विधियों के कस्टम विशेषताओं को दोहराता है। ऐसा प्रतीत होता है कि कुछ मामलों में, AsyncStateMachine
विशेषता का ctor तर्क, जो एक प्रकार होना चाहिए, खाली है।मोनो। सेसिल अपवाद सिस्टम.एक्सएमएल डीएलएल के .NET 4.5 संस्करण का विश्लेषण करते समय फेंक दिया, क्यों?
कोड का निम्न भाग यह reproduces:
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
अपवाद से
Mono.Cecil.ModuleDefinition.CheckFullName(string fullName = "")
फेंक दिया जाता है मेरा प्रश्न है - इस Mono.Cecil में एक बग, या System.Xml है। DLL? क्या spec ctor तर्क के रूप में प्रकट होने के लिए "खाली" प्रकार की अनुमति देता है?
हो गया, https://github.com/jbevain/cecil/issues/102 पर बहुत बहुत धन्यवाद! –
@OmerRaviv तय, इस मुद्दे को दर्ज करने के लिए धन्यवाद! –