c# फ़ाइल या असेंबली 'माइक्रोसॉफ्ट.डाटा.एडीएम' लोड नहीं हो सका




.net azure (8)

हम विंडोज़ एज़ूर स्टोरेज NuGet पैकेज संस्करण 4.1.0 का उपयोग कर रहे हैं, इसकी माइक्रोसॉफ्ट.डाटा.ओडाटा पर निर्भरता है और उसने उस पैकेज को भी जोड़ा है जिसमें माइक्रोसॉफ्ट.डाटा.एडएम डीएल है। जब हम एप्लिकेशन को बनाते और चलाते हैं तो हमें कभी-कभी निम्न त्रुटि मिलती है:

Could not load file or assembly 'Microsoft.Data.Edm' or one of its dependencies. The
located assembly's manifest definition does not match the assembly reference. (Exception
from HRESULT: 0x80131040)

हमारे पास web.config में निम्न बाध्यकारी रीडायरेक्ट है और हमने जांच भी की है और यह समाधान का किसी भी प्रोजेक्ट द्वारा संदर्भित Microsoft.Data.Edm का एकमात्र संस्करण है।

  <dependentAssembly>
    <assemblyIdentity name="Microsoft.Data.Edm" publicKeyToken="31bf3856ad364e35" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-5.6.1.0" newVersion="5.6.1.0" />
  </dependentAssembly>

कभी-कभी जब मैं बिन फ़ोल्डर में देखता हूं तो मुझे Microsoft.Data.Edm का dll संस्करण v 5.6.0 मिलता है। मैं सभी परियोजनाओं के माध्यम से रहा हूं और मुझे स्टोरेज क्लाइंट को छोड़कर Microsoft.Data.Edm का संदर्भ नहीं मिल रहा है और यह निश्चित रूप से 5.6.1 है।

5.6.0 संस्करण कहां से आ रहा है, कोशिश करने और काम करने का सबसे अच्छा तरीका क्या है? जब हमें यह त्रुटि मिलती है तो हम बिन और ओबीजे फ़ोल्डरों को हटाते हैं और पुनर्निर्माण करते हैं और फिर यह ठीक काम करता है, 5.6.1 संस्करण वहां है और सब कुछ काम करता है लेकिन आखिरकार यह फिर से होता है।

संपादित करें:

हमने NuGet से सभी नवीनतम संस्करणों में फिर से अपग्रेड किया है और अभी भी कोई भाग्य नहीं है, मैंने एक टूल चलाया जो निम्नलिखित निर्भरताओं को दिखाता है:

Possible conflicts for Microsoft.Data.Edm:

Microsoft.Data.OData      references Microsoft.Data.Edm, Version=5.6.2.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35
Microsoft.Data.Services.Client references Microsoft.Data.Edm, Version=5.6.2.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35
Microsoft.WindowsAzure.Storage references Microsoft.Data.Edm, Version=5.6.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35

Possible conflicts for Microsoft.Data.OData:

Microsoft.Data.Services.Client references Microsoft.Data.OData, Version=5.6.2.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35
Microsoft.WindowsAzure.Storage references Microsoft.Data.OData, Version=5.6.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35

जो मुझे समझ में नहीं आता है, हमारे पास ऐप बाइंडिंग रीडायरेक्ट सेट है लेकिन कभी-कभी 2.6.0 संस्करण कॉपी किया जाता है और कभी-कभी 2.6.2। क्या किसी को पता है कि यह क्यों हो रहा है, पहले कभी यह समस्या नहीं थी।


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

<Reference Include="Microsoft.Data.Services.Client, Version=5.6.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
  <SpecificVersion>False</SpecificVersion>
  <HintPath>..\packages\Microsoft.Data.Services.Client.5.6.1\lib\net40\Microsoft.Data.Services.Client.dll</HintPath>
</Reference>

यह शायद आईआईएस पर आभासी पथ की समस्या हो सकती है (मुझे लगता है कि, इस असेंबली को एप्लिकेशन शुरू होने पर पहले लोड किया गया था)।

डिस्क पर विभिन्न स्थानों से दो प्रोजेक्ट शुरू करते समय एक ही वर्चुअल पथ के साथ मुझे एक ही समस्या मिली।

समाधान IIS से इस पथ को हटा रहा है, IIS प्रक्रिया को रीसेट करें और VS से फिर से वर्चुअल पथ बनाएं।


मेरे लिए मुझे WindowsAzure.MobileServices.Backend.Entity NuGet पैकेज को अनइंस्टॉल करना पड़ा जो Microsoft.Data.Edm सहित कई असेंबली को हटा देता है। और फिर मैंने इसे फिर से स्थापित किया और चमत्कारी रूप से, यह काम किया!

यह मेरी एज़ूर मोबाइल सर्विसेज वेबएपी प्रोजेक्ट में था, इसलिए इसे काम करने की ज़रूरत थी, और शुक्र है कि यह अब करता है।

आशा है कि ये आपकी मदद करेगा।


यहां कुछ चीजें हैं जिन्हें आप आजमा सकते हैं:

  1. यह सुनिश्चित करने के लिए अपने पोस्ट बिल्ड इवेंट की जांच करें कि कोई Microsoft.Data.Edm.dll फ़ाइल मैन्युअल रूप से बिन फ़ोल्डर में कॉपी नहीं की जा रही है।
  2. सुनिश्चित करें कि अन्य संकुल Microsoft.Data.Edm 5.6.1 पर निर्भरता नहीं रखते हैं। ऐसा करने का आसान तरीका आपके पैकेज.कॉन्फिग फाइलों को देखकर है।
  3. यदि आपका कोड स्रोत नियंत्रण में है, तो सुनिश्चित करें कि कोई भी बिन फ़ोल्डर में जांच न करें। मुझे आश्चर्य है कि कितने लोग इस मूल नियम को नहीं जानते हैं।
  4. WindowsAzure.Storage और Microsoft.Data.Edm पैकेज अनइंस्टॉल करें। फिर दोबारा स्थापित करें और सुनिश्चित करें कि आप केवल स्थिर संस्करण स्थापित करें।

HTH।


मिल गया !!
आपके app.config फ़ाइल के अंदर bindingredirect संस्करण को बदलें।
बाध्यकारी रीडायरेक्ट तत्व उस संस्करण को संदर्भित करता है जिस पर अपवाद शिकायत करता है, और अपवाद दूर हो जाएगा।
स्पष्टीकरण:
शायद ऐप.कॉन्फिग फ़ाइल और प्रोजेक्ट रेफरेंस असेंबली सिंक से बाहर हो गई, जिससे त्रुटि हुई।

<runtime>
		<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
			<dependentAssembly>
				<assemblyIdentity name="Microsoft.Data.Edm" publicKeyToken="31bf3856ad364e35" culture="neutral" />
				<bindingRedirect oldVersion="0.0.0.0-5.6.4.0" newVersion="5.6.4.0" />
			</dependentAssembly>
		</assemblyBinding>
	</runtime>


विजुअल स्टूडियो को बंद करके और फिर से खोलकर इसे सफलतापूर्वक हल किया गया।


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

हम विजुअल स्टूडियो बिल्ड आउटपुट वर्बोजिटी को बढ़ाकर समस्याग्रस्त परियोजना की पहचान करके हमारी मशीनों में से किसी एक पर इस मुद्दे का पता लगाने में सक्षम थे:

फिर, हमने आउटपुट की खोज की और लक्ष्य परियोजना की पहचान की जो "माइक्रोसॉफ्ट.डाटा.एडीएम" की खोज करके समस्याग्रस्त था। हमने देखा है कि माइक्रोसॉफ्ट.डाटा.एडीएम पर अप्रत्यक्ष निर्भरता प्रतीत होती है, लेकिन हमने देखा कि असेंबली को उस परियोजना के लिए पैकेज के रूप में स्पष्ट रूप से शामिल नहीं किया गया था। इसलिए, Nuget पैकेज कंसोल का उपयोग करके, हमने प्रोजेक्ट को लक्षित किया और भाग लिया: Install-Package Microsoft.Data.Edm जिसने समस्या को हल किया।


मेरे पास बस मेरे निर्माण सर्वर पर एक ही समस्या है और बिल्ड आउटपुट की जांच करने पर मैंने निम्नलिखित पर ध्यान दिया:

फ़ाइल को "सी: \ प्रोग्राम फ़ाइलें (x86) \ Microsoft \CF डेटा सेवा \ 5.6 \ bin.NETFramework \ Microsoft.Data.Edm.dll" से "bin \ Microsoft.Data.Edm.dll" से कॉपी कर रहा है।

ऐसा लगता है कि बिल्ड सर्वर पर कुछ स्थापित है जो मेरी मशीन पर नहीं है, इसलिए मुझे इसे ट्रैक करने की आवश्यकता है।







dll