विजुअल स्टूडियो 2010 अचानक नेमस्पेस नहीं देख सकता है?


83

मेरे C # WinForms समाधान में दो परियोजनाएं हैं। एक DLL जो मुख्य परियोजना है जिस पर मैं काम कर रहा हूं, और एक निष्पादन योग्य WinForms जिसे मैं "सैंडबॉक्स" कहता हूं, ताकि मैं एक बार में DLL को आसानी से संकलित / चला / डिबग कर सकूं।

मैं दोनों परियोजनाओं के लिए .Net 4.0 में काम कर रहा हूं।

सब कुछ ठीक काम कर रहा था जब तक कि मैंने कुछ उचित निर्दोष कोड नहीं जोड़ा, और DLL में System.Web का संदर्भ। अब मेरा सैंडबॉक्स प्रोजेक्ट DLL प्रोजेक्ट के नाम स्थान को नहीं देख सकता है। मैंने कुछ भी नहीं बदला जो मुझे लगता है कि इसे प्रभावित करना चाहिए था।

अगर मैं सैंडबॉक्स संदर्भों से DLL के प्रोजेक्ट संदर्भ को हटा देता हूं और इसे फिर से जोड़ देता हूं, तो लाल रेखांकित सभी गायब हो जाते हैं और मेरे सभी वर्गों आदि के लिए रंग कोडिंग वापस आ जाती है; लेकिन जैसे ही मैं समाधान बनाने की कोशिश करता हूं, पूरी बात फिर से अलग हो जाती है।

जब मैं सैंडबॉक्स के संदर्भों में DLL प्रोजेक्ट को राइट-क्लिक करता हूं और ऑब्जेक्ट ब्राउजर में देखता हूं, तो मैं नामस्थान और वहां का सारा सामान देख सकता हूं।

मुझे लग रहा है कि यह किसी प्रकार का बग हो सकता है?

यह VS2010 बग के कुछ प्रकार है? मेरे पास कुछ महीने पहले भी यही मुद्दा था और मैं इसे पूरी तरह से एक नई परियोजना बनाकर और अपनी फाइलों को फिर से आयात करके ही ठीक कर सका। इस बार, हालांकि, मेरे पास एक बेज़िलिन फाइलें हैं और केवल अंतिम उपाय के रूप में ही ऐसा करूंगा!

संपादित करें: पूरी तरह से गुजरने और मेरे सभी परिवर्तनों को पूर्ववत करने के बाद, यह जानने की कोशिश की कि समस्याओं का कारण क्या है, यह इस पंक्ति को लगता है:

string url = "http://maps.google.com?q=" + HttpUtility.UrlEncode(address);

अगर मैं इस लाइन पर टिप्पणी करता हूं, तो मुझे कोई नामस्थान त्रुटियां नहीं मिलती हैं और परियोजना ठीक बनती है। मैं हालांकि इस लाइन के साथ कुछ भी गलत नहीं देख सकता।

जवाबों:


149

मैं VS2010 में इसे बग घोषित करने के लिए तैयार हूं, इसने कई प्रोग्रामर को पहले से ही काट लिया है। तय करना आसान है: प्रोजेक्ट + प्रॉपर्टीज, एप्लिकेशन टैब, टारगेट फ्रेमवर्क को डिफ़ॉल्ट रूप से चुने गए क्लाइंट प्रोफाइल के बजाय ".NET फ्रेमवर्क 4" में बदलें।

System.Web क्लाइंट प्रोफ़ाइल में शामिल नहीं है। पहली जगह में यह विकल्प होना काफी मूर्खतापूर्ण है, क्लाइंट प्रोफाइल .NET 4.0 के पूर्ण संस्करण की तुलना में केवल 15% छोटा है। डिफ़ॉल्ट रूप से चयनित होने के बाद भी यह अधिक सुरक्षित है। लेकिन मैं पीछे हटा।

अद्यतन: दयापूर्वक यह सब VS2012 में तय हो गया। जो अब ग्राहक प्रोफ़ाइल को नए प्रोजेक्ट के लिए डिफ़ॉल्ट नहीं बनाता है। और क्लाइंट प्रोफाइल पूरी तरह से .NET 4.5 में रिटायर हो गया, अच्छी रिडांस।


1
उसके लिए धन्यवाद। मेरा DLL .Net 4.0 पर सेट किया गया था, लेकिन सैंडबॉक्स .net 4.0 क्लाइंट प्रोफाइल के लिए सेट किया गया था। 5 महीने के लिए इस परियोजना पर काम करने के बाद, घबराहट की मात्रा मुझे तब मिली जब पूरी चीज बस बिना किसी कारण के लिए गिर गई ... कम से कम मुझे अगली बार पता चल जाएगा!
ओजाह

27
इस तरह के उत्तर इस साइट के असली मांस और आलू हैं। मानवता में मेरा विश्वास थोड़ा बढ़ा है और मेरी परियोजना आखिरकार संकलन करती है। धन्यवाद।
CloudMeta

1
मैंने अपने सभी प्रोजेक्ट्स में टारगेट फ्रेमवर्क को 4.0 में बदल दिया है, हालाँकि अभी भी प्रोजेक्ट्स के नाम स्थान नहीं मिल पाए हैं। क्या कुछ और है जिसे मुझे सत्यापित करना चाहिए?
स्टीवन रिससर्ट

@UwConcept - यह संस्करण संख्या के बारे में नहीं है। यह फुल बनाम क्लाइंट प्रोफाइल के बारे में है। कृपया अपना प्रश्न शुरू करें यदि यह मदद नहीं करता है।
हंस दर्रा

@ हंसपसंद हां, अगर मेरा सवाल भ्रामक था तो मुझे खेद है। मैं 4.0 क्लाइंट संस्करण का उपयोग कर रहा था, और इसे 4.0 में बदल दिया। फिर भी, मेरे समाधान में अन्य परियोजनाओं के नाम स्थान क्रॉस-प्रोजेक्ट नहीं पाए जा सकते हैं।
स्टीवन रिससर्ट

8

यह सुनिश्चित करने के लिए जांचें कि दोनों परियोजनाएं अपने लक्ष्य ढांचे के लिए गैर-ग्राहक प्रोफ़ाइल का उपयोग कर रही हैं (ऐसा करने के लिए प्रत्येक परियोजना के गुणों पर जाएं)।


धन्यवाद मार्क। आप और हंस ने इसे सिर पर धारण किया, इसने इसे ठीक कर दिया।
ओजाह

2

एक संभावना यह है कि क्लास लाइब्रेरी का लक्ष्य .NET फ्रेमवर्क संस्करण परियोजना की तुलना में अधिक है। मुझे इस समस्या का सामना करना पड़ा, और मैंने दृश्य स्टूडियो को बंद करके, दृश्य स्टूडियो को फिर से खोलना, समाधान को साफ करना और पुनर्निर्माण किया। इसने मेरे लिए काम किया। कुछ अन्य पोस्ट पर, मैंने उत्तर पढ़ लिए हैं और अधिकांश उपयोगकर्ताओं ने इस तरह से समस्या को हल किया है।


1
यह सवाल पहले से ही साढ़े चार साल से अधिक संतोषजनक जवाब दे चुका था।
ओजाह

+ बारीकी से संबंधित बग पर सहायक और उपयोगी जानकारी जोड़ने के लिए
एरिक ब्राउन -

@ 2017 में इस बग को देखने वाले किसी व्यक्ति के रूप में, मुझे निश्चित रूप से अधिक जानकारी के लिए खुशी है। +1
काउथुलु

1

केवल सैंडबॉक्स डीएल के साथ केवल स्वतंत्र रूप से परियोजना के निर्माण की कोशिश करें।

फिर अपने निष्पादन योग्य प्रोजेक्ट को आवश्यक dll पर इंगित करें और सुनिश्चित करें कि copy localवह सेट है true। संदर्भ सेटिंग्स में।

Tthen निष्पादन योग्य परियोजना का निर्माण करता है।


और सभी चीजों के प्यार के लिए पवित्र सुनिश्चित करें कि लक्ष्य प्रकार संकलन के लिए निर्धारित है और न कि सामग्री (जो
किन्हीं

0

".NET फ्रेमवर्क 4 क्लाइंट प्रोफाइल" से ".NET फ्रेमवर्क 4" तक लक्ष्य ढांचे को बदलना मेरे लिए एक समान समस्या है। मैं इस बात से सहमत हूं कि ग्राहक प्रोफ़ाइल का उपयोग करने के लिए अधिक लाभ नहीं है। मुझे लगता है कि जब तक मुझे याद है कि ग्राहक प्रोफ़ाइल के लिए विजुअल स्टूडियो चूक नहीं करता है, तब तक मैं अजीब त्रुटियों से ग्रस्त हूं। मुझे लगता है कि त्रुटि मिलने पर कहानी का नैतिक है: यदि "समाधान का पुनर्निर्माण" काम नहीं करता है, तो लक्ष्य रूपरेखा की जांच करें ...


0

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


0

मेरे पास बस यह मुद्दा था और यह पता चला कि मेरे पास कई नामस्थानों का उपयोग किया जा रहा था, जिसमें एक ही वस्तु का नाम था (अर्थात व्यावसायिक वस्तुओं का नाम पीवीसी मॉडल के समान था);

पूरी तरह से योग्य नामों के लिए मेरे लिए मुद्दा तय हो गया।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.