2008-11-12 9 views
28

प्रकार 'x' को किसी असेंबली में परिभाषित नहीं किया गया है जिसका संदर्भ नहीं दिया गया है। आपको असेंबली 'abc123' का संदर्भ जोड़ना होगा।अजीब त्रुटि - CS0012: प्रकार x को एक असेंबली में परिभाषित किया गया है जिसका संदर्भ

मेरे पास एक .NET 2.0 वेब एप्लिकेशन है जो मेरी असेंबली 'abc123' का संदर्भ देता है। असेंबली जीएसी में मौजूद है और मैंने सत्यापित किया है कि यह सही (समान) संस्करण है। शेष एप्लिकेशन में एक .aspx पृष्ठ को छोड़कर कोई समस्या नहीं है। प्रश्न वाले पृष्ठ में दोहराना है जो उपयोगकर्ता नियंत्रण को अपने "फ़ील्ड" में से एक के रूप में प्रदर्शित करता है। पुनरावर्तक के प्रकार y की एक सूची के लिए बाध्य करने पर मैं जैसा कि यहाँ दिखाया उपयोगकर्ता के प्रकार एक्स (y की संपत्ति) एक सूची को नियंत्रित पारित:

<uc1:usercontrol id="ucusercontrol " runat="server" myPublicUserControlProperty='<%#Eval("CollectionOfX") %>'/> 

उपयोगकर्ता नियंत्रण की संपत्ति सेट पर, मैं प्रकार की सूची के लिए बाध्य उपयोगकर्ता नियंत्रण में एक ग्रिडव्यू के लिए एक्स।

ध्यान देने योग्य एक अजीब बात यह है कि यह रिपोर्ट मेरे विकास पीसी पर ठीक काम करती है लेकिन एक बार जब मैं तैनात करता हूं तो किसी भी सर्वर पर नहीं। मेरा पीसी विंडोज एक्सपी, आईआईएस 6, वीएस2005 है। सर्वर विंडोज सर्वर 2003, आईआईएस 6 हैं।

मुझे उम्मीद है कि मैंने काफी अच्छी तरह समझाया है। किसी भी अंतर्दृष्टि के लिए अग्रिम धन्यवाद जो आप प्रदान कर सकते हैं।

उत्तर

27

मैं माइक का सहकर्मी हूं, और हमने एक समाधान तैयार किया।

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

हमारा समाधान मैन्युअल रूप से एएसपी.NET को इंगित करने के लिए असेंबली अनुभाग में web.config में एक प्रविष्टि जोड़ना था।

ऐसा लगता है कि जब भी आप पृष्ठ में किसी प्रकार का संदर्भ नहीं देते हैं (कोड-पीछे नहीं), तो आपको web.config फ़ाइल में परिभाषित असेंबली जानकारी या पृष्ठ निर्देश में आवश्यकता होती है।

<assemblies> 
     <add assembly="MyAssembly, Version=1.0.0.0, Culture=neutral, PublicKeyToken=[MyPublicKeyToken]"/> 
</assemblies> 
3

इन प्रकार की समस्याओं का निवारण करते समय, Fusion Log Viewer हमेशा एक बड़ी मदद रही है।

3

वहाँ भी है एक बग है जो अपने आप इसी तरह के लक्षण के साथ प्रकट कर सकते हैं, here का वर्णन किया।

कामकाज सी: \ विन्डोज़ \ माइक्रोसॉफ्ट.NET \ Framework \ v2.0.50727 \ अस्थायी एएसपी.NET फ़ाइलें \ निर्देशिका में सब कुछ हटाना है, और यह केवल डीबग मोड में प्रकट होता है।

+1

लिंक टूटा हुआ है। –

0

मेरे पास एक ही त्रुटि थी, लेकिन मेरे पास सार्वजनिक मेरी कक्षा में कन्स्ट्रक्टर था जो किसी अन्य प्रोजेक्ट से ऑब्जेक्ट पैरामीटर के रूप में उपयोग किया जाता था।

मैंने उस निर्माता को आंतरिक बनाकर समस्या का समाधान किया।

0

अक्सर नहीं, यह कैश असेंबली की वजह से है। इस समस्या को हल करने का एक तरीका proj या config फ़ाइल में "मजबूत संदर्भ" बनाकर है। कि type x वास्तव में अपने App_Code, यह dirtying और अक्सर फिर से बचत पुन: संयोजित करने के लिए वेब अनुप्रयोग बलों और समस्या का हल एक वर्ग है अगर इस ब्लॉग post

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

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