मैं एक ऐसी ही समस्या का सामना करना पड़ा। मुझे केवल एक प्रकार के वर्ग और विधि नाम के साथ एक विशिष्ट विधि का फ़ाइल नाम और रेखा संख्या प्राप्त करने की आवश्यकता थी। मैं एक पुराने मोनो नेट संस्करण (एकता 4.6) पर हूं। मैंने पुस्तकालय सेसिल का उपयोग किया, यह आपके पीबीबी (या मोनो के लिए एमडीबी) का विश्लेषण करने और डीबग प्रतीकों का विश्लेषण करने के लिए कुछ सहायक प्रदान करता है। https://github.com/jbevain/cecil/wiki
एक दिया प्रकार और विधि के लिए:
Mono.Cecil.ReaderParameters readerParameters = new Mono.Cecil.ReaderParameters { ReadSymbols = true };
Mono.Cecil.AssemblyDefinition assemblyDefinition = Mono.Cecil.AssemblyDefinition.ReadAssembly(string.Format("Library\\ScriptAssemblies\\{0}.dll", assemblyName), readerParameters);
string fileName = string.Empty;
int lineNumber = -1;
Mono.Cecil.TypeDefinition typeDefinition = assemblyDefinition.MainModule.GetType(myType.FullName);
for (int index = 0; index < typeDefinition.Methods.Count; index++)
{
Mono.Cecil.MethodDefinition methodDefinition = typeDefinition.Methods[index];
if (methodDefinition.Name == methodName)
{
Mono.Cecil.Cil.MethodBody methodBody = methodDefinition.Body;
if (methodBody.Instructions.Count > 0)
{
Mono.Cecil.Cil.SequencePoint sequencePoint = methodBody.Instructions[0].SequencePoint;
fileName = sequencePoint.Document.Url;
lineNumber = sequencePoint.StartLine;
}
}
}
मैं जानता हूँ कि यह थोड़ा देर हो चुकी है :) लेकिन मुझे आशा है कि यह किसी को मदद मिलेगी:
System.Type myType = typeof(MyFancyClass);
string methodName = "DoAwesomeStuff";
मैं इस समाधान मिल गया!
संभावित डुप्लिकेट [स्रोत फ़ाइल नाम और प्रकार के सदस्य की लाइन संख्या कैसे प्राप्त करें?] (Http://stackoverflow.com/questions/126094/how-to-get-the-source-file-name -और-द-लाइन-नंबर-ऑफ-टाइप-सदस्य) –
आप इसे क्यों चाहते हैं? जिन कारणों से मैं सोच सकता हूं उनमें से अधिकांश को प्रतीक/स्रोत सर्वर जैसे टूल द्वारा हल किया जाएगा ... –