wpf - वर्तमान संदर्भ में 'InitializeComponent' नाम मौजूद नहीं है




visual-studio-2010 visual-studio (20)

  1. समाधान निर्देशिका पर नेविगेट करें
  2. \ Obj फ़ोल्डर हटाएं
  3. समाधान को पुनर्निर्माण करें

मुझे इस त्रुटि का सामना करने के दौरान सामना करना पड़ा जहां मैंने कुछ फ़ाइलों / फ़ोल्डर्स का नाम बदल दिया और प्री-एक्सिसिटिंग * .g.cs फ़ाइलों को पुन: उत्पन्न करने के लिए आवश्यक था।

अगर मैं विजुअल स्टूडियो 2010 एसपी 1 में एक नई परियोजना तैयार करता हूं और "डब्ल्यूपीएफ एप्लीकेशन" का चयन करता हूं और जेनरेट किए गए एप्लिकेशन को बनाने का प्रयास करता हूं, तो मुझे त्रुटि मिलती है

वर्तमान संदर्भ में 'InitializeComponent' नाम मौजूद नहीं है।

मुझे आज सुबह एक ही त्रुटि मिली जब मैंने अपनी वर्तमान परियोजना बनाने की कोशिश की। कल, मुझे संकलन और इसे चलाने में कोई समस्या नहीं थी।

मैंने एक नई परियोजना बनाई और जब भी मैंने प्रोजेक्ट संकलित किया तो त्रुटि मिली। मैंने अभी परियोजना को एक सहयोगी को भेजा है, और उसने बिना किसी त्रुटि के संकलित किया है।

गलत क्या है?


.xaml फ़ाइल के लिए बिल्ड एक्शन को "पेज" पर भी सेट किया जाना चाहिए, जब परियोजनाओं के बीच एक xaml फ़ाइल को स्थानांतरित किया जाए तो यह सेटिंग गुम हो जाती है (कम से कम वीएस 2010 में)।


इस त्रुटि का एक और आम कारण यह है कि यदि आपने इसमें कुछ किया है:

  1. नया UserControl बनाने के लिए प्रोजेक्ट में फ़ोल्डर पर राइट क्लिक करें। यह एक वर्ग और xaml फ़ाइल बनाता है जो फ़ोल्डर के नामस्थान में उपयोगकर्ता नियंत्रण से प्राप्त होता है।

  2. फिर आप कक्षा के नामस्थान को बदलने का निर्णय लेते हैं क्योंकि आप वास्तव में कोड के संगठन के लिए फ़ोल्डर का उपयोग कर रहे हैं। एक्स: कक्षा विशेषता स्वचालित रूप से अपडेट नहीं हो जाएगी, इसलिए यह उस वर्ग की खोज करेगा जो मौजूद नहीं है। शायद एक बेहतर त्रुटि संदेश का उपयोग कर सकता है जैसे "x: क्लास प्रकार नामस्थान bla.blaa.blaaa में नहीं मिला।"


इस समस्या का एक और समाधान यह है कि संपत्ति को आसानी से बदलना-> एक्सएएमएल पर एंबेडेड रिसोर्स से किसी अन्य चीज़ पर एक्शन बनाएं, सहेजें, फिर इसे एंबेडेड रिसोर्स पर वापस बदलें। त्रुटि दूर हो जाती है।


उन लोगों के लिए जो (वीएस2015 में) में डीबग मोड में कोई त्रुटि नहीं है, लेकिन रिलीज मोड में निर्दिष्ट त्रुटि है (और फिर भी परियोजना ठीक चलती है), यहां कोशिश करने के लिए कुछ आसान है:

  1. अपमानजनक xaml.cs फ़ाइल से संबंधित XAML फ़ाइल खोलें।
  2. एक संपादन करें - कोई भी संपादन, जैसे कहीं जगह जोड़ें
  3. फ़ाइल को सहेजें और इसे बंद करें

यह विधि मेरे लिए काम करती है।


उन लोगों के लिए जो इसे इंटरनेट पर पाते हैं। यदि संकलन है तो Windows.csproj फ़ाइल देखें। 2 प्रविष्टियां होनी चाहिए

<Page Include="YourFile.xaml">
  <SubType>Designer</SubType>
  <Generator>MSBuild:Compile</Generator>
</Page>

<Compile Include="YourFile.xaml.cs">
  <DependentUpon>YourFile.xaml</DependentUpon>
</Compile>

उपर्युक्त उत्तरों में से कोई भी मेरे लिए काम नहीं करता है। मैंने डुप्लिकेट को छोड़कर उन सभी को आजमाया। हालांकि कुछ अजीब कारणों से यह विजुअल स्टूडियो 2015 में मेरे क्रॉस-प्लेटफ़ॉर्म प्रोजेक्ट में काम करता है:

  1. उस समाधान पर राइट-क्लिक करें जो समाधान एक्सप्लोरर में समस्या पैदा कर रहा है। पॉप-अप मेनू में चुनें: जोड़ें -> कक्षा
  2. क्रॉस-प्लेटफ़ॉर्म का चयन करें -> फॉर्म Xaml पृष्ठ। सुंदर पेज 1.cs मानक नाम रखें और जोड़ें पर क्लिक करें।
  3. ध्यान दें कि पिछले InitializeComponent () - किसी कारण से समस्या अभी गायब हो गई है।
  4. नव निर्मित पेज 1.cs हटाएं और प्रोग्रामिंग जारी रखें जैसे विजुअल स्टूडियो बस ठीक काम कर रहा था।

एक और संभावित स्पष्टीकरण यह है कि आप x86 के खिलाफ निर्माण कर रहे हैं। अपने समाधान पर राइट-क्लिक करें और कॉन्फ़िगरेशन प्रबंधक चुनें। देखें कि क्या आप किसी भी CPU के बजाय x86 के खिलाफ बना रहे हैं।


जब आप किसी अन्य प्रोजेक्ट से कक्षा आयात करते हैं, या xaml फ़ाइल का पथ बदलते हैं, या xaml या पीछे .cs फ़ाइल के नामस्थान को बदलते हैं तो आपको यह त्रुटि मिल सकती है।

एक: इसमें एक नामस्थान हो सकता है जो आपके पास नई परियोजना में आपके जैसा नहीं है

namespace TrainerB.MVC.Forms
{
     public partial class AboutDeveloper : ContentPage
     {
          public AboutDeveloper()
          {
               InitializeComponent();
          }
     }
}

जैसा कि आप आयातित फ़ाइल में नाम स्थान पुराने प्रोजेक्ट नाम से शुरू होते हैं: "ट्रेनरबी" , लेकिन आपकी नई प्रोजेक्ट का एक अलग नाम हो सकता है, इसलिए इसे .xaml फ़ाइल दोनों में सही नए प्रोजेक्ट नाम में बदलें। पीछे .cs फ़ाइल।

दो:

.xaml फ़ाइल के गुणों को यहां बदलें:

कार्य बनाएँ: एम्बेडेड संसाधन

कस्टम टूल : एमएसबिल्ड: अपडेट डिज़ाइनटाइमएक्सएएमएल


नया UserControl बनाने के लिए प्रोजेक्ट में फ़ोल्डर पर राइट क्लिक करें जो मेरे लिए समस्या थी। मैंने फ़ोल्डर के बाहर एक ही नियंत्रण बनाया और वह था।


मुझे एक ही समस्या थी, उम्मीद है कि मैंने अपने मेनविंडो xaml और cs को एक नई फ़ाइल में कॉपी किया है और फिर उन्हें वापस अपने मूल स्थान पर कॉपी किया है। मुझे WPF ऐप को संकलित करने का प्रयास करने के बाद यह त्रुटि मिली।

मैंने इस त्रुटि को ठीक करने के लिए क्या किया था नामस्थान का नाम बदलना था (उदाहरण के लिए नामस्थान -> जैसे नामस्थान नया, और फिर से काम किया। मैंने फिर नामस्थान को मूल में बदल दिया।


मुझे एक ही समस्या थी, लेकिन मेरे मामले में इनमें से कोई भी मदद नहीं करता था। मेरी स्थिति में मेरे पास प्रत्येक WPF प्रोजेक्ट (नई बनाई गई परियोजनाओं सहित) ने इस त्रुटि के साथ संकलन करना बंद कर दिया था। आखिरकार मैंने सभी नेट फ्रेमवर्क को अनइंस्टॉल किया, फिर उन्हें पुनः इंस्टॉल किया और चीजें फिर से काम करना शुरू कर दीं। मैंने विजुअल स्टूडियो की पुन: स्थापना भी की, लेकिन यह पता चला कि इसका कोई प्रभाव नहीं पड़ा।


मेरे पास एक ही समस्या थी, मुझे अपनी साझा परियोजना को एक पोर्टेबल क्लास लाइब्रेरी में परिवर्तित करना पड़ा।


मेरे पास यह था (हालांकि यह मेरी गलती थी और कुछ कोड कॉपी और पेस्ट करने के बाद छोड़ दिया गया था); यह तब हो सकता है जब नामस्थान XAML और कोड के पीछे मेल नहीं खाता है

ईजी

<UserControl x:Class="DockPanel.TreeView" />

और पीछे कोड है

namespace NotThePanelItShouldBe

मैं ऊपर दिए गए उत्तर से सहमत हूं कि नामस्थानों से मेल खाना है। हालांकि, मुझे इस तरह की समस्या थी जहां नामस्थान मेल खाते थे।

ठीक करने के लिए, मैंने बस एक्सएएमएल में नेमस्पेस को एक अविश्वसनीय रूप से बदल दिया, सहेजा गया, फिर इसे वापस सही में बदल दिया। देखा!


मैंने इसे दो बार सामना किया है और इसे भूलने के कारण क्या भूल रहा है। जब मैंने फ़ाइल के पीछे अपने कोड पर नेमस्पेस का नाम बदल दिया, लेकिन मेरे एक्सएएमएल में नहीं, तो मैंने इसमें भाग लिया।

तो जांचें कि आपने ऐसा किया है या नहीं।

नामस्थान और वर्ग के नामों से मिलान करने की आवश्यकता है क्योंकि वे दोनों आंशिक वर्ग का हिस्सा हैं

namespace ZZZ
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow
    {
         //...
    }
}

<!-- XAML -->
<Window x:Class="ZZZ.MainWindow">

यदि आप Xamarin फॉर्म का उपयोग कर रहे हैं और आप XAML फ़ाइल को स्थानांतरित करते हैं तो फ़ाइल का "बिल्ड एक्शन" बदल दिया जाता है। ज़ैमरिन फॉर्मों को "एक्शन एंबेडेड रिसोर्स" बनाना आवश्यक है।

विजुअल स्टूडियो में "बिल्ड एक्शन" लागू करें:

Select the XAML file -> Properties -> Build Action = Embedded Resource


यदि नेमस्पेस सही हैं तो भी एक ही त्रुटि है,

बस अपना आवेदन बंद करें और इसे फिर से खोलें

यह आपकी समस्या का समाधान कर सकता है


यह मेरे साथ हुआ क्योंकि Nuget पैकेज अनइंस्टॉलर ने App.xaml में <application> तत्व पर सभी विशेषताओं को उड़ा दिया। इसमें एक्स: क्लास एट्रिब्यूट शामिल था, जो एप्लिकेशन क्लास नाम निर्दिष्ट करता है। तो आंशिक वर्ग जिसमें InitializeComponent () विधि शामिल नहीं हुई थी।

मैंने App.xaml को स्रोत-नियंत्रित प्रतिलिपि में वापस कर समस्या को ठीक किया।


यह मेरे साथ हुआ जब मैंने दुर्घटनाग्रस्त xaml परिभाषा से वर्ग संदर्भ हटा दिया:

मैंने बदल दिया है

<Window x:Class="myapp.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">

इसके साथ पहली पंक्ति:

<RibbonWindow 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">

मुझे पता है कि यह मूल प्रश्न का उत्तर नहीं है (क्योंकि यह प्रोजेक्ट किसी अन्य मशीन पर बनाता है), लेकिन त्रुटि संदेश एक जैसा था, इसलिए शायद मैं इस स्थिति के साथ किसी की मदद करूंगा।








initializecomponent