2012-04-26 21 views
11

मेरे पास MySite असेंबली के भीतर एक वर्ग के रूप में सर्वर नियंत्रण है (यानी, मेरी साइट के प्रोजेक्ट में न केवल एएसपीएक्स फाइलें हैं, बल्कि सर्वर नियंत्रण भी शामिल हैं जो उन एएसपीएक्स फाइल संदर्भ हैं)। मैं एक aspx फ़ाइल में निम्न कोड का उपयोग करें: इस प्रकारनामस्थान में संदिग्ध संदर्भ

<%@ Register Assembly="MySite" Namespace="MySite.misc" TagPrefix="TAC" %> 
... 
<TAC:CustomACM ID="myID" runat="server" /> 

वर्ग के कोड है:

namespace MySite.misc 
{ 
    public class CustomACM : AutoCompleteExtender, INamingContainer 
    { 
     //... 
    } 
} 

साइट MyID के बच्चों के भीतर काम करता है और पूरी तरह से संकलित, लेकिन IntelliSense टूट जाता है। MySiteSC.misc दोनों कक्षाओं के भीतर नामस्थान को बदलना और पंजीकरण निर्देश इसे ठीक करता है, हालांकि MySite.miscSC का उपयोग करने में सहायता नहीं होती है। न तो MySiteSC और न ही miscSC का उपयोग मेरे समाधान के भीतर कहीं और किया जाता है, और कोई अन्य CustomACM कक्षा किसी भी नामस्थान में मौजूद नहीं है।

रीशेर्पर टूलटिप के साथ लाल रंग में "माइसाइट" (यानि, रजिस्टर निर्देश के भीतर नामस्थान का हिस्सा) रेखांकित करता है, "रजिस्टर निर्देश अप्रयुक्त है और सुरक्षित रूप से हटाया जा सकता है \ n संदिग्ध संदर्भ।" ReSharper को अक्षम करने से यह त्रुटि दिखने से रोकती है, लेकिन समस्या ठीक नहीं होती है।

क्या मेरे लिए कस्टमएसीएम नियंत्रण के नामस्थान को बदलने के बिना इस समस्या को ठीक करना संभव है (और कस्टमएसीएम नियंत्रण को एक अलग असेंबली में स्थानांतरित किए बिना)?

+0

यह वेब अनुप्रयोग और नहीं एक वेब साइट सही है?(आप App_Code में अपनी सीएस फाइलों को संग्रहीत नहीं कर रहे हैं) – Peter

+0

यह एक वेब एप्लिकेशन है और मैं App_Code का उपयोग नहीं कर रहा हूं। – Brian

उत्तर

0

अपने web.config फ़ाइल

<assemblies> 
... 
</assemblies> 

अनुभाग की जांच करता है, तो हो सकता है आप एक पृष्ठ में एलान के तौर पर इस्तेमाल किया जा रहा MySite.misc

+0

नहीं, मेरे वेब.कॉन्फिग असेंबली में माईसाइट के 0 संदर्भ हैं। जब मैं एक जोड़ता हूं, तो यह ठीक से हल करता है, लेकिन त्रुटि को रोकता नहीं है। – Brian

+0

क्या आपने डुप्लिकेट लिस्टिंग के लिए संपत्ति एक्सप्लोरर के तहत संदर्भों की जांच की थी? – TheMoot

+0

कोई डुप्लिकेट लिस्टिंग नहीं है। – Brian

1

को डुप्लिकेट संदर्भ में अपने नियंत्रण को सक्षम करने के लिए है देखने के लिए, आप एक नक्शा चाहिए अपने नियंत्रण के नामस्थान पर उपसर्ग टैग करें।

अपने कस्टम सर्वर नियंत्रण प्रोजेक्ट में, क्या आपने अपनी फ़ाइल AssemblyInfo.cs में TagPrefixAttribute विशेषता जोड़ा है?

आपको नामस्थान और उपसर्ग के बीच मैपिंग बनाने के लिए फ़ाइल के अंत में यह लाइन जोड़नी होगी।

Using System.Web.UI; 

आप करते हैं उसके बाद, जब भी आप .aspx पृष्ठ पर टूलबॉक्स से एक कस्टम सर्वर नियंत्रण खींचें, वी.एस. स्वचालित रूप से जोड़ना चाहिए:

[assembly: TagPrefix("MySite.misc", "TAC")] 

फ़ाइल की शुरुआत में इस लाइन को जोड़े निर्देश पंजीकृत करें।

वैकल्पिक रूप से, पंजीकरण निर्देश का उपयोग करने के बजाय आप web.config फ़ाइल में टैग उपसर्ग/नामस्थान मैपिंग निर्दिष्ट कर सकते हैं यदि आपका कस्टम नियंत्रण वेब अनुप्रयोग में एकाधिक पृष्ठों में उपयोग किया जाएगा।

<?xml version="1.0"?> 
<configuration> 
    <system.web>  
    <pages> 
    <controls> 
     <add tagPrefix="TAC" Assembly="MySite" 
     namespace="MySite.misc"> 
     </add> 
    </controls> 
    </pages> 
    </system.web> 
</configuration> 
+0

ऐसा करने के बाद, मैं एक पृष्ठ पर कस्टमएसीएम नियंत्रण खींचने के लिए टूलबॉक्स का उपयोग करने में सक्षम था। ऐसा करने से पृष्ठ के शीर्ष पर एक रजिस्टर निर्देश स्वचालित रूप से जोड़ा जाता है, लेकिन नए जोड़े गए रजिस्टर निर्देश अभी भी संदिग्ध संदर्भ समस्या से पीड़ित हैं। – Brian

+1

क्या आपने इस समस्या को हल किया? मुझे एक ही समस्या है – ydd1987

+0

@ ydd1987: नहीं, मैं अभी भी मूल प्रश्न में उल्लेख किए गए वर्कअराउंड का उपयोग कर रहा हूं (यानी, प्रभावित नियंत्रण के लिए एक अलग नामस्थान का उपयोग कर)। – Brian

5

रिशेर्पर आईएमएचओ यहां छोटी है। समस्या को रीशेपर (रीशेपर> विकल्प> सामान्य> साफ़ कैश) के कैश को साफ़ करके हल किया जा सकता है, फिर वीएस को पुनरारंभ करना और फिर से निर्माण करना। संदेश तब गायब होना चाहिए। मुझे पता है, यह वास्तव में एक समाधान नहीं है लेकिन यह काम करता है।

+0

मेरी मूल पोस्ट के अनुसार, ReSharper को अक्षम करने से पूरी तरह से समस्या ठीक नहीं होती है। – Brian

+0

@ ब्रियन "मेरा मूल पोस्ट प्रति" के साथ आपका क्या मतलब है? मैं वहां कोई संकेत नहीं देख सकता कि आपने रीशेपर को अक्षम कर दिया है। आपने कहा, कि ReSharper MySite को रेखांकित करता है। तो जब भी आप ReSharper को अक्षम करते हैं तो यह अभी भी रेखांकित है? या मुझे कुछ गलत मिल रहा है? – sprinter252

+1

मूल पोस्ट से: "ReSharper को अक्षम करने से यह त्रुटि दिखने से रोकती है, लेकिन समस्या ठीक नहीं होती है।" समस्या यह है कि, "साइट पूरी तरह से काम करती है और संकलित करती है, लेकिन IntelliSense myID के बच्चों के भीतर टूट जाती है।" – Brian

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