2009-06-05 8 views
16

मैंने एक और WPF प्रोजेक्ट से तीन कक्षाओं की प्रतिलिपि बनाई और फिर ने उनके नामस्थान को बदल दिया।UserControl फ़ाइलों में नेमस्पेस बदलने के बाद, ... g.cs फ़ाइलों को त्रुटियां मिलती हैं

अब जब मैं प्रोजेक्ट चलाता हूं, तो मुझे ".g.cs" फ़ाइलों में त्रुटियां मिलती हैं जो कहती हैं कि नामस्थान गलत है। मैं इस नेमस्पेस को बदलता हूं लेकिन जब मैं संकलित करता हूं और फिर से चलाता हूं, तो ".g.cs" फ़ाइलों को पुराने नामस्थान संस्करण के साथ पुन: उत्पन्न और ओवरराइट किया जाता है और मुझे फिर से त्रुटि मिलती है।

फ़ाइलें क्या हैं और मैं उन्हें वर्तमान फ़ाइलें कुछ कैश कि अपनी स्पष्ट रूप से कहीं न कहीं पकड़े के बजाय से फिर से उत्पन्न हो कैसे कर सकते हैं?

मैंने \ bin और \ obj निर्देशिकाओं को हटा दिया और पुनर्निर्मित किया लेकिन फिर भी त्रुटियां प्राप्त हुईं।

उत्तर

33

.g.cs फ़ाइल .xaml फ़ाइल से उत्पन्न होती है। नए नेमस्पेस-योग्य वर्ग नाम से मेल खाने के लिए आपको अपनी .xaml फ़ाइल में x: class = विशेषता को बदलने की आवश्यकता है; तो .g.cs अगले संकलन पर सही ढंग से उत्पन्न किया जाएगा। (स्वयं .g.cs फ़ाइल को बदल न करें - आप केवल अपने आप को निराश करेंगे।)

उदाहरण के लिए, यदि आपने अपने .cs में यह था:

namespace Foo { 
    class Bar { ... 

और इस में अपने .xaml:

namespace Baz { 
    class Bar { ... 

तो फिर आप अपने .xaml बदलने के लिए की आवश्यकता होगी:

<UserControl x:Class="Foo.Bar" ... 

और फिर आप अपने नाम स्थान बदल फाइल करने के लिए:

<UserControl x:Class="Baz.Bar" ... 
+1

जो यह था: केवल x: class = प्रविष्टियों को chnage करने की आवश्यकता थी और सब ठीक था, धन्यवाद! –

1

क्या आपने X12ML में UserControl पर x:Class विशेषता में कक्षा का नामस्थान अपडेट किया था?

विफल रहा है, क्या आपने इस परियोजना को पुनर्निर्माण करने की कोशिश की है?

9

मैं देख रहा हूँ यह कोई पुराना धागा है, लेकिन चूंकि उपयोगकर्ताओं को अब भी कभी-कभी इस मुद्दे में चलाने, मैं सोचा मैं एक संभावित कारण में फेंक चाहते हैं। यदि आपके पास कोई xmlns है: xx नेमस्पेस आपके xaml में जिसे आपने नामस्थान बदलते समय अपडेट करने के लिए उपेक्षित किया है, तो यह g.cs फ़ाइल में कथन का उपयोग करके अमान्य भी होगा।

+0

+1 यह मेरे लिए कारण था। स्वचालित रूप से जेनरेट किया गया 'xmlns: local = "clr-namespace: some.App.Namespace" 'गलत था और गलत नामस्थान को इंगित करता था। – finlaybob

5

मुझे आपके 'obj' फ़ोल्डर को हटाने और पुनर्निर्माण करके इसे हल करने का एक और तरीका मिला।

+0

मेरे पास यह सब ठीक स्थानीय था और बिल्ड सर्वर पर असफल रहा - बिल्ड सर्वर में लॉग इन करना पड़ा और ओबीजे फ़ोल्डर को हटा देना पड़ा ... –

+0

धन्यवाद, मेरे लिए काम किया – Artiom

2

मैं अपने AssemblyInfo.cs

[assembly: XmlnsDefinition("http://www.example.com/wpf", "MyCorp.Wpf.OldNamespace")] 

जहां पुराने नाम स्थान अभी भी मौजूद थे में XML नामस्थान शॉर्टकट परिभाषित किया था। मेरी सभी * .xaml फ़ाइलों के माध्यम से खोजना स्पष्ट रूप से मदद नहीं करता ...

शॉर्टकट को ठीक करने के बाद, त्रुटि तुरंत चली गई।

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