2010-09-30 9 views
12

मुझे ऊपर अपवाद प्राप्त करने में समस्या है। मेरे पास अपेक्षाकृत सरल संरचना दो डीएल में अलग है।सी # "विधि नहीं मिली" प्रतिबिंब के उपयोग के बिना रनटाइम पर अपवाद

सबसे पहले बुनियादी कार्यान्वयन के साथ एक आईएनटीटी सेवा, आईएनटीटीटी है। दूसरे में वास्तविक कार्यान्वयन के साथ-साथ इंटरफेस भी शामिल हैं। इसलिए एक आईमाचिन सेवा है जो आईईएनटीटी सेवा और मशीन सेवा प्रदान करती है जो आईईएनटीटी सेवा और EntityService दोनों लागू करती है। परिणाम संग्रह (इकाई प्लस सेवा) के लिए इसी तरह की स्थिति होती है। इसके अतिरिक्त सेवा (मशीन और परिणाम) आंशिक कक्षाएं/इंटरफेस हैं जहां कक्षा में से एक ऑटो उत्पन्न होता है।

अब एक परिणाम मैचिन में मैं एक मशीन प्राप्त करने की कोशिश कर रहा हूं और एक मामले में यह अस्तित्व में नहीं है मैं इसे बना रहा हूं और बचत कर रहा हूं। हालांकि जब मैं सहेजने की कोशिश कर रहा हूं तो मुझे EntityService क्लास से बचत विधि तक पहुंचने का प्रयास करते समय "विधि नहीं मिली" मिली। हालांकि अगर मैं EntityService को लपेटता हूं। मशीन सेवा में विधि सहेजें, यह बिना किसी अपवाद के काम कर रहा है।

संपादित:

कोड की आवश्यकता नहीं है। यह संकल्प संदर्भ को फिर से लिंक करना था। मेरे लिए क्या भ्रामक था कि मेरा डीएल जीएसी में नहीं है, यह वीएस से जुड़ा हुआ है। और अधिक यह दृढ़ता से हस्ताक्षरित नहीं है, केवल अंतर संस्करण संख्या है।

+2

क्या आप कोड को पोस्ट कर सकते हैं जो आपके 'परिणाम माचिन', इंटरफ़ेस और कार्यान्वयन को तुरंत चालू करने का प्रयास कर रहा है? – Oded

उत्तर

6

मेरा पहला वृत्ति यह सुनिश्चित करने के लिए जांचना होगा कि असेंबली में गुम विधि के साथ कक्षाएं हों। मुझे लगता है कि यह संभव है कि असेंबली तुरंत अपडेट नहीं हुई?

3

विभिन्न असेंबली से "समान" प्रकार का संदर्भ देते समय, सुनिश्चित करें कि आप सब कुछ उसी पथ के माध्यम से लोड कर रहे हैं। अन्यथा, समान प्रकारों को वास्तव में माना जा सकता है जैसे कि वे अलग हैं।

अधिक के लिए यह लेख देखें: इस प्रकार Fusion Loader Contexts - Unable to cast object of type 'Whatever' to type 'Whatever'

9

हम इस त्रुटि कुछ समय मिल गया है, तो आप समस्या को पुन: कर सकते हैं:

    साथ
  • बनाया परियोजना 2 dll के (जैसे कि एक कार्यक्रम dll और एक परीक्षण dll) GAC
  • को
  • तैनाती कार्यक्रम dll जोड़े नई विधि
  • परीक्षण बनाएं नई विधि का परीक्षण करने के
  • निर्माण समाधान
  • रन परीक्षण (डिबग मोड में नहीं)

अब आप विधि लापता अपवाद मिल जाएगा। इसका कारण यह है कि यह जीएसी में मौजूद डीएलएल के पुराने संस्करण का उपयोग कर रहा है और इसमें विधि नहीं है।

कुछ बार यह पुराने डीएल के कैश किए गए संस्करण का उपयोग करता है, IISreset मदद कर सकता है।

आपके मामले में डीएल के किसी भी पुराने संस्करण की जांच करें।

+0

मुझे कभी-कभी यह मिलता है जब विकास पर्यावरण एक डीएल के संदर्भ में है। देव पर्यावरण को बंद करने के बाद इसे फिर से खोलना उस मुद्दे को ठीक करेगा। – Jay

1

यह मेरे साथ हुआ जब मैं अंदर गया और मेरे निर्माण सेटिंग्स को बस/बिन/डीबग के आउटपुट में बस/बिन के बजाय आउटपुट में बदल दिया, जब मैं देव फ़ोल्डर से साइट होस्ट करने के लिए आईआईएस का उपयोग कर रहा था।

आपको सेवा के रूप में उसी फ़ोल्डर में बाइनरी, मेरे मामले में, और बिन फ़ोल्डर में पुराने संस्करणों को छोड़ दिया जाना चाहिए और बाद में/bin/डीबग फ़ोल्डर (और/bin/release) में बनाया गया है ।

या तो सेटिंग को एक स्तर पर कॉपी करने के लिए एक पोस्ट बिल्ड एक्शन है, डीबग/रिलीज के लिए अलग-अलग आईआईएस अनुप्रयोग हैं, या किसी अन्य फ़ोल्डर को पूरी तरह से तैनात करें। उत्तरार्द्ध शायद सबसे अधिक "सही" है, लेकिन मेरे उद्देश्यों के लिए मुझे बहुत अधिक व्हील-कताई के बाद महसूस हुआ, कि मेरे पास सेवा के फ़ोल्डर में अलग-अलग संस्करण थे। HTH।

0

मेरे मामले में मैंने अभी .NET 3.0 (विंडोज एक्सपी) के साथ एक मशीन पर तैनात किया है जबकि संकलन लक्ष्य .NET 3.5 रहा है।

यह त्रुटि संदेश वास्तव में सहायक नहीं है।

समस्या सिस्टम से डेटाकंट्रैक्ट का उपयोग कर रही है। रनटाइम। क्रमबद्धता।

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