2009-10-06 20 views
16

मैं एक समस्या है (जाहिर है सवाल :)प्रकार का नाम {myUserControl} प्रकार में मौजूद नहीं है {} myNamespace.myNamespace

मैं एक project-- MyProject है ... इसलिए परियोजना के बाकी नामस्थान "MyProject" के रूप में किसी भी वर्ग के डिफ़ॉल्ट का उपयोग करता है ... कोई समस्या नहीं है।

मेरी प्रोजेक्ट में, मैंने एक कस्टम उपयोगकर्ता नियंत्रण बनाया जिस पर इसके कई अन्य नियंत्रण हैं (लेबल, टेक्स्टबॉक्स, आदि)। तो, वह वर्ग "MyProject" के डिफ़ॉल्ट नामस्थान के भीतर भी है। सभी संकलन कोई समस्या नहीं है। इस उपयोगकर्ता नियंत्रण पर, स्कोप दृश्यता की पुष्टि करने के लिए, मैंने यह सुनिश्चित किया है कि डिज़ाइनर कोड और कोड-बेहिंद (मेरा कोड) दोनों "MyProject" नामस्थान (वे हैं) के भीतर दोनों हैं, और वे दोनों क्रमशः सार्वजनिक भाग क्लास MyUserControl हैं ।

अब समस्या। मैं एक साधारण रूप बनाता हूं (डिफ़ॉल्ट रूप से नामस्थान "MyProject" में भी)। टूलबॉक्स से, "MyUserControl" मौजूद है इसलिए मैं इसे MyNewForm पर खींचता हूं। खींचें/ड्रॉप ठीक है।

सभी को सहेजें, संकलित करें, असफल ... डिज़ाइनर एक अतिरिक्त "माइप्रोजेक्ट" संदर्भ जोड़ रहा है जिससे इस प्रकार यह दिखाई दे रहा है कि उपयोगकर्ता नियंत्रण वास्तव में MyProject.MyProject.MyUserControl .. MyProject.MyUserControl के बजाय स्थित है।

जैसे ही मैं मैन्युअल रूप से अतिरिक्त "MyProject" हटा देता हूं, सहेजें और संकलित करें, सब ठीक है। हालांकि, अगर मैं फॉर्म को दोबारा संपादित करता हूं, तो कुछ बदलता हूं, एम $ इसे मूल "MyProject.MyUserControl" संदर्भ में बदल देता है।

सभी कहा जा रहा है कि, यहाँ अपने प्रोजेक्ट से स्निपेट होते हैं ...

namespace MyProject 
{ 
    partial class MyNewForm 
    { 
     ... 
     private void InitializeComponent() 
     { 
     // THIS is the line that has the extra "MyProject." reference 
     // when I manually remove it, all works perfectly 
     this.MyUserControl1 = new MyProject.MyUserControl(); 
     } 
    } 


    private MyUserControl MyUserControl1; 

} 

फिर, MyUserControl परिभाषा मैं है ...

namespace MyProject 
{ 
    public partial class MyUserControl : UserControl 
    ... 
} 

और से में डिजाइनर के माध्यम से MyUserControl ...

namespace MyProject 
{ 
    public partial class MyUserControl : UserControl 
    ... 

} 

मदद के लिए धन्यवाद ...

उत्तर

11

डिजाइनर क्या कर रहा है ठीक है।

-> आपके पास अपने प्रोजेक्ट में कोई नामस्थान है जिसे MyProject.MyProject कहा जाता है।

+2

धन्यवाद के धन्यवाद। – Larry

+15

यह भी होता है, जब आपके पास नामस्थान के समान नाम के साथ कुछ नामस्थान में कक्षा होती है। – greenskin

0

चूंकि यह एक शीर्ष खोज परिणाम था जब मैं इस त्रुटि थी, बस मेरी कारण और समाधान पोस्ट करना चाहते हैं ("क्लास देखें" में यह खोजने का प्रयास करें)।

  • मेरे पास एक समाधान के भीतर दो परियोजनाएं थीं, एक 'सामान्य' वर्ग फ़ाइल साझा करना जो एक लिंक के रूप में जोड़ा गया था।
  • मैंने एक लिंक के रूप में एक दूसरी 'सहायक' कक्षा फ़ाइल जोड़ा, पहले कोड के भीतर अपना कोड इस्तेमाल किया, और त्रुटि मिली।

समस्या यह थी कि मैंने दोनों परियोजनाओं में एक लिंक के रूप में दूसरी 'सहायक' कक्षा नहीं जोड़ा था।

इसलिए अन्य प्रोजेक्ट में एक 'सामान्य' वर्ग अपडेट किया गया था, लेकिन अब 'हेल्पर' वर्ग का कोई ज्ञान नहीं था।आत्म करने के लिए

नोट: त्रुटि सूची :)

11

पी एस की परियोजना स्तंभ के लिए और अधिक ध्यान देते हैं। किसी को भी जिसकी समस्या है लेकिन उसे कोई समाधान नहीं मिला है ...

मान लीजिए कि आपने एक नया WindowsForm एप्लिकेशन बनाया है;

  1. एक ही नाम का उपयोग करके एक नया WindowsFormAplication प्रोजेक्ट बनाएं जिसका समाधान नाम है।
  2. डिफ़ॉल्ट पूर्व-निर्मित फ़ॉर्म नाम को "फॉर्म 1" कहा जाता है। और परियोजना का नाम के रूप में अपना नाम बदलें।
  3. प्रोजेक्ट में नया UserControl क्लास जोड़ें।
  4. प्रोजेक्ट बनाएं/पुनर्निर्माण करें और उपयोगकर्ता नियंत्रण टूलबॉक्स पर स्थित है।
  5. उपयोगकर्ता नियंत्रण को फॉर्म पर खींचें और डिबगिंग शुरू करें।
  • Error: The type name 'userControlName' does not exist in the type 'projectName.FormName'

मैं किसी भी समाधान के लिए नेट पर अनुसंधान के लिए किया था, लेकिन किसी भी सवाल का जवाब के साथ नहीं आ सकता है ...

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

यदि आप इस बात पर जोर देते हैं कि फॉर्म प्रोजेक्ट और प्रोजेक्ट नाम आपकी परियोजना आवश्यकताओं के आधार पर समान होना चाहिए, तो कस्टम डीएलएल बनाया जा सकता है और इसमें उपयोगकर्ता नियंत्रण का उपयोग किया जा सकता है।

फिर एक नियंत्रण के रूप में उपयोग करने के लिए, करने के लिए "टूलबॉक्स" का उपयोग कर DLL फ़ाइल जोड़ें "आइटम चुनें ..."

अंत में इसका इस्तेमाल करने के लिए तैयार होने जा रहा है।

PS2। घंटों के लिए एक ही समस्या का सामना करना, यह वह समाधान है जो मैंने पाया था।

+1

मैंने एक समान समस्या में भाग लिया है। मेरे लिए, यह नामस्थान के समान नाम वाला एक वर्ग था।मुझे पागल कर दिया लेकिन इस जवाब के लिए धन्यवाद मैंने पाया। –

1

उपयोगकर्ता नियंत्रण और फॉर्म का नाम समान है। विभिन्न नामों का उपयोग करने से समस्या हल हो जाएगी।

2

नामस्थान नाम और कक्षा का नाम अलग होना चाहिए। डब्ल्यूसीएफ जोड़कर उत्पन्न कोड स्वचालित रूप से नेमस्पेस का संदर्भ देता है लेकिन यदि कक्षा का नाम नेमस्पेस नाम जैसा ही है, तो जेनरेट कोड कक्षा को देखता है और कुछ भी संकलित नहीं होगा। जहां मैं एक masterpage कि .master फ़ाइल

0

बस इस का सामना करना पड़ा। मेरे मामले में मैंने "Grants.xsd" डेटासेट और "Grants.aspx" पृष्ठ बनाया था। किसी भी तरह वे संघर्ष में आ गए जिसके परिणामस्वरूप यह त्रुटि हुई।

आप अपराधी कीवर्ड (कक्षा का नाम) और विजुअल स्टूडियो 2013 में होवर करके इसे आसानी से शूट कर सकते हैं, यह आपको बताएगा कि संघर्ष कहां है।

0

भी ऐसा होता है कि आप विभिन्न पृष्ठों का उपयोग में, लेकिन एक ही नाम के साथ एक स्पष्ट

<%@ Import Namespace="MyNamespace" %> 

था

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