2010-05-03 9 views
32

मैंने एक्सएलएमएल में सुविधा के लिए कुछ सीएलआर नेमस्पेस को एक एक्सएमएलएन में जोड़ने के लिए एक्सएमएलएनडीफिनिशन एट्रिब्यूट का उपयोग करना शुरू कर दिया है।स्थानीय असेंबली पर XmlnsDefinition कैसे काम करें?

दुर्भाग्यवश, ऐसा लगता है कि यह केवल विदेशी असेंबली का उपयोग करते समय काम करता है। यदि मेरे पास एक ही असेंबली में XAML फ़ाइल है जो नामस्थान में हैं, तो मैं XmlnsDefinition से संदर्भित कर रहा हूं, तो कंपाइलर उस प्रकार के बारे में त्रुटि देता है जो xmlns में मौजूद नहीं है जो मैं परिभाषित कर रहा हूं।

इस प्रकार को एक विदेशी असेंबली में ले जाना समस्या को हल करता है।

क्या असेंबली पर XmlnsDefinition का उपयोग करने का कोई तरीका है और इसका उपयोग XAML के माध्यम से उस असेंबली के भीतर किया जा सकता है?

उत्तर

40

दुर्भाग्य से, नहीं। असेंबली में शामिल होने के लिए एक्सएएमएल द्वारा निहित कोड उत्पन्न करने के लिए असेंबली का निर्माण करने से पहले XAML फ़ाइल को पार्स किया जाना चाहिए। एक्सएएमएल कंपाइलर फाइलों के पीछे कोड (उदाहरण के लिए, .g.cs में समाप्त होने वाली फाइलें) उत्पन्न करता है और फिर ये फ़ाइल असेंबली का हिस्सा बनती है, जिसमें एक्सएएमएल फ़ाइल निहित है। चूंकि असेंबली अभी तक नहीं बनाई गई है, एक्सएएमएल कंपाइलर XmlnsDeclaration विशेषताओं को निर्धारित करने के लिए इसे लोड नहीं कर सकता है।

1

इसके बजाय clr-namespace का उपयोग करें। उदाहरण के लिए:

xmlns:controls="clr-namespace:Rhapsody.UI.Main.Controls 
संबंधित मुद्दे