2010-05-21 22 views
14

मैं अपने Silverlight आवेदन पत्र में एक 3 पार्टी घटक का उपयोग करने की कोशिश कर रहा हूँ और जब मैं नियंत्रण का एक उदाहरण बनाने का प्रयास करें, मैं एक XamlParseException मिलती है:आप XamlParseException को कैसे डिबग करते हैं?

{System.Windows.Markup.XamlParseException: **Set property 'System.Windows.FrameworkElement.Style' threw an exception.** [Line: 0 Position: 0] 
---> System.Windows.Markup.XamlParseException: **Elements in the same ResourceDictionary cannot have the same x:Key** [Line: 1739 Position: 47]  
at MS.Internal.XcpImports.CreateFromXaml(UnmanagedMemoryStream stream, String sourceAssemblyName, boolean createNamescope, Boolean requireDefaultNamespace, Boolean allowEventHandlers)  
at System.Windows.Controls.Control.GetBuiltInStyle(IntPtr nativeTarget, IntPtr& nativeStyle)  
--- End of inner exception stack trace ---  
at System.Windows.Application.LoadComponent(Object component, Uri resourceLocator)  
at SpellCheckerSample.StandardSpellDialog.InitializeComponent()  
at SpellCheckerSample.StandardSpellDialog..ctor()} 

मैं यह कैसे डीबग कर सकते हैं? मुझे कैसे पता चलेगा कि फाइल लाइन 1739, स्थिति 47 में है?

उत्तर

2

बाहर कर देता है मेरी विशेष समस्या यह है कि ComponentOne घटक केवल सिल्वरलाइट 4. तहत काम करता है था एक बार मैं SL4 यह सब काम किया लक्षित करने के लिए बदल दिया है।

+0

हालांकि रिपोर्ट करने में कितनी अजीब त्रुटि है। –

+1

हां, और समय की एक बड़ी बर्बादी! आपके सुझावों के लिए धन्यवाद। –

7

खोजने के लिए एक बगजर हो सकता है। मूल रूप से डीबगर से जितना संभव हो उतना विवरण इकट्ठा करने का प्रयास करें।

  1. XamlParseException पर तोड़ने के लिए डीबगर सेट करें।
  2. कॉलस्टैक पर एक नज़र डालें। यह संभव हो सकता है कि अपमानजनक नियंत्रण का कन्स्ट्रक्टर कॉलस्टैक पर है।
  3. जब स्थानीय लोगों को स्थानांतरित किया गया तो यह देखने के लिए कि क्या फ़ंक्शन के लिए कोई पैरामीटर यह बताता है कि यह कौन सा घटक है।
  4. यदि नहीं अगले ढेर प्रविष्टि नीचे डबल क्लिक करें और चरण 3.
  5. दोहराएँ चरण 3 और 4.

बाद मैं यह लिखा मैंने महसूस किया कि नियंत्रण के निर्माता callstack पर वास्तव में है जाने के लिए और यह SpellCheckerSample है। बहुत अधिक संभावना है कि उस नियंत्रण के लिए .XAML पृष्ठ है। यदि आप स्रोत तक पहुंच प्राप्त कर सकते हैं, तो फ़ाइल नाम सबसे अधिक संभावना है जैसे SpellCheckerSample.xaml

त्रुटि स्वयं बहुत सीधी आगे है, ऐसा लगता है कि एक ही कुंजी के साथ एक ही कुंजी के साथ परिभाषित कई चीजें हैं। नीचे दिए गए कोड ऐसा करने का कारण होगा:

<Window.Resources> 
    <myConverters:BananaToCarrotConverter x:Key="StupidestConverterEver" /> 
    <myConverters:BananaToAppleConverter x:Key="StupidestConverterEver" /> 
<Window.Resources> 
+1

हाँ, मैं सहमत हूं। अच्छा होगा अगर आप देख सकें कि समस्या क्या हो रही थी। मैं आपकी मदद की सराहना करता हूं, लेकिन इसने मुझे अभी तक कहीं भी उपयोगी नहीं बनाया है :( –

+0

क्या आपके पास इस लाइब्रेरी का स्रोत है? यदि आपके पास सही फ़ाइल है, तो लाइन: 1739 स्थिति: 47 आपको संसाधन के लिए ले जाएगा जो कारण बन रहा है मुद्दा। –

+0

असल में यह घटक है सिल्वरलाइट स्पेल चेकर घटक। मैंने अपने ऐप को टुकड़ों में हैक किया है - मेरी App.xaml फ़ाइल में सभी संसाधनों को हटा रहा है, और फिर भी यह विफल हो जाता है। फिर भी, मेरे पास कंपोनेंटऑन से एक नमूना ऐप है जो ठीक काम करता है। बहुत अजीब। हालांकि, जब तक मुझे यह पता न लगे, मैं हैकिंग को दूर रखूंगा! –

-1

ऐप चलाने की कोशिश करते समय आपको .cs फ़ाइल में एक त्रुटि दिखाई देनी चाहिए। और दिए गए लाइन नंबर और कॉलम के साथ इस .cs फ़ाइल के लिए संबंधित .xaml फ़ाइल सही है।

0

जांचें कि आपके पास संसाधन संसाधन संदर्भ क्या हैं - प्रस्ताव आमतौर पर है कि उनमें से एक को एक त्रुटि मिली है जिसे ठीक करने की आवश्यकता है।

यदि आपका अपवाद ऐप से होता है तो यह शायद आपके विलय वाले डीआईआर में से एक है, अन्यथा प्रश्न में नियंत्रण।

यह भी जांचें कि आप शैलियों के लिए संसाधन डीआईआर उपयोग नहीं खो रहे हैं (यदि आपको XAML डिज़ाइन समय में चेतावनी मिलेगी तो आपको रीशेपर मिल गया है)।

enter image description here

0
  1. XamlParseException पर तोड़ने के लिए डीबगर सेट (डीबग -> अपवाद -> साझा भाषा क्रम Exceptins -> System.Windows.Markup -> XamlParseException लाइन -> फेंक दिया कॉलम में टिक सेट)
  2. लाइन द्वारा callstack लाइन के माध्यम से जाना
  3. कोशिश डीबगर में अपवाद पर एक नजर डालें (विशेष रूप से पर InnerException और LineNumber गुण)। स्थानीय विंडो पर एक रेखा को देखने के दौरान।यह फ्रेमवर्क कोड में भी कुछ चर प्रकट करता है जो उपयोगी हो सकता है।
  4. एक्सएएमएल के कुछ हिस्से को हटाने का प्रयास करें और देखें कि अपवाद फिर से होता है या नहीं। यह आपको कोड का पता लगाने में मदद करेगा जो समस्याओं का कारण बनता है।
संबंधित मुद्दे

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