2011-10-14 20 views
5

मैं कई स्रोतों के साथ CompileAssemblyFromSource का उपयोग करके गतिशील रूप से कोड संकलित कर रहा हूं।.NET CompileAssemblyFromSource: निर्धारित करें कि कौन सा स्रोत विफल हुआ?

संकलन त्रुटि की स्थिति में मैं Errors संग्रह से लाइन नंबर आदि को पुनः प्राप्त कर सकता हूं।

हालांकि लाइन संख्या सभी स्रोतों के भीतर लाइन संख्या है। मुझे जो चाहिए वह असफल स्रोत (अतिरिक्त स्रोतों के बीच) से कौन सा स्रोत और रेखा संख्या है।

क्या यह गणना एक्रोबेटिक्स किए बिना संभव है?

+3

मैं इसके बजाय 'CompileAssemblyFromFile' का उपयोग करने पर विचार करता हूं (कम से कम एक डीबग या वर्बोज़ विकल्प के रूप में) यह आपको तथ्य के बाद स्रोतों को देखने और देखने के लिए क्या देख रहा है। यदि आप अस्थायी फ़ाइलों का उपयोग करते हैं तो आप हमेशा बाद में साफ कर सकते हैं ... –

+1

@Paul यह एक उत्तर होना चाहिए! –

+0

@ पॉल: एक अस्थायी फ़ाइल को लिखना मैं उपयोग नहीं कर सकता मैं डर रहा हूँ। मेरे समाधान में (जिसमें विशिष्ट समस्या है), स्रोत कई अलग-अलग स्रोतों से एकत्र किए जाते हैं (यहां तक ​​कि अंतिम उपयोगकर्ता से भी) और मुझे केवल वास्तविक स्रोत को देखने की आवश्यकता है जिसमें समस्या है। –

उत्तर

0

मैं इसे अपने ऐप्स में से एक में करता हूं, और यदि कोई त्रुटि है, तो मैं संकलित स्रोत उत्पन्न करता हूं - संकलन के दौरान उत्पन्न सभी त्रुटि संदेशों के साथ - संकलक त्रुटि उत्पन्न करने वाला स्रोत। मैंने इन त्रुटि संदेशों को टिप्पणियों में रखा है और उन्हें स्रोत फ़ाइल के अंत में जोड़ दिया है। स्रोत फ़ाइल फ़ाइल .riteAllText() के साथ लिखी जाती है अगर मुझे सही ढंग से याद है, उपयोगकर्ता temp निर्देशिका में एक फ़ाइल में, और फिर मैं उस स्रोत मॉड्यूल के पथ के साथ एक अपवाद फेंक देता हूं। यह सब तभी होता है जब संकलन त्रुटि हो। अगर कोई त्रुटि नहीं है, तो मैं इस तरह से स्रोत नहीं लिखता हूं।

वास्तव में मेरे मामले में केवल एक मॉड्यूल है क्योंकि मैं सभी स्रोतों को एक ही मॉड्यूल में जोड़ता हूं। इस स्थिति में "लाइन 143" का अर्थ क्या है इसके बारे में कोई भ्रम नहीं है।

संबंधित मुद्दे