dll System.Net.Http NuGet पैकेज 4.3.0 संदर्भ System.IO.FileLoadException System.Diagnostics.DiagnosticSource ver.0.0.0 संदर्भ पर बनाता है




nuget-package .net-4.6.2 (2)

मैंने NuGet से System.Net.Http (संस्करण 4.3.1) को स्थापित करने में इस समस्या का समाधान किया।

समस्या का विवरण:

एक साझा पुस्तकालय "shared.dll" परियोजना संदर्भ System.Net.Http NuGet पैकेज 4.3.0। "साझा dll" संदर्भ वाले अनुप्रयोग में विफल रहता है

System.IO.FileLoadException

फ़ाइल या विधानसभा को लोड नहीं किया जा सका 'System.Diagnostics.DiagnosticSource, संस्करण = 4.0.0.0, संस्कृति = तटस्थ, सार्वजनिककीटोकन = cc7b13ffcd2ddd51' या इसके निर्भरता में से एक स्थित विधानसभा की स्पष्ट परिभाषा विधानसभा संदर्भ से मेल नहीं खाती है। (HRESULT से अपवाद: 0x80131040)

System.Net.Http.WinHttpHandler.SendAsync पर (...)

इस मुद्दे की जांच करने के बाद हम ऊपर की विफलता के लिए निम्नलिखित कारण पर आए:

  • System.Net.Http v 4.3.0 के लिए पैकेज जानकारी पृष्ठ सिस्टम। डायग्नोस्टिक्सडायग्नॉस्टिक सर्स v 4.3.0 या इसके बाद के संस्करण पर निर्भरता बताती है। इस पैकेज को स्वचालित रूप से डाउनलोड किया जाता है, जब System.Net.Http v 4.3.0 को प्रोजेक्ट से संदर्भित किया जाता है।
  • System.Net.Http v 4.3.0 के NuGet पैकेज वास्तव में System.Net.Http.dll v 4.1.1.0 (8 जनवरी 2017 तक) में शामिल है।
  • NuGet package.Diagnostics.DiagnosticSource v 4.3.0 में वास्तव में System.Diagnostics.DiagnosticSource v 4.0.1.0 (8 जनवरी 2017 तक) में शामिल है।
  • System.Net.Http देखें 4.1.1.0 संदर्भ System.Diagnostics.DiagnosticSource v। 4.0.0.0
  • System.Diagnostics.DiagnosticSource v। 4.0.0.0 डाउनलोड डीएल v 4.0.1.0 के लिए एक सटीक मिलान नहीं है।
  • जब एक दृढ़-नामित लाइब्रेरी संदर्भ का संस्करण सटीक मिलान में नहीं है, तो एनएटी चलाने का समय अभी भी संदर्भित विधानसभा को खोजने का प्रयास करता है। अगर ऐसा नहीं हो सकता: लाइब्रेरी लोड अपवाद उत्पन्न होता है। इसके अलावा निम्नलिखित टिप्पणी देखें

कुछ कामकाज हैं:

  1. app.config विकल्प: किसी भी "shared.dll" के लिए app.config में बाध्यकारी रीडायरेक्शन के साथ संगत संस्करणों की घोषणा करें (हम उससे कितनी दूर तक जाना चाहिए?) - संदर्भित अनुप्रयोग।
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
  <dependentAssembly>
    <assemblyIdentity name="System.Diagnostics.DiagnosticSource" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-4.0.1.0" newVersion="4.0.1.0" />
  </dependentAssembly>
</assemblyBinding>
  1. Force System.Diagnostics.DiagnosticSource.dll को संस्करण 4.0.0.0 में जोड़ें: System.Diagnostics.DiagnosticSource v। 4.0.0.0 के लिए NuGet संदर्भ जोड़ें System.Net.Http को संदर्भित करने के लिए डीएलएल संस्करण 4.0.1.0 स्वचालित डाउनलोड करने के लिए। यह विकल्प स्वचालित रूप से NuGet निर्भरता को अपडेट करने की क्षमता को खो देता है, लेकिन अनुप्रयोग विन्यास-कम की तैनाती करता है

हालांकि एक सचेत महसूस हुई है कि उचित मुद्दे समाधान संकुल के मालिकों द्वारा पूर्वनिर्धारित NuGet संकुल असंगतताओं को ठीक करने में निहित है जब स्रोत पर तय किया जाता है, तो System.Net.Http पैकेज उपभोक्ता कोड के लिए कोई समाधान नहीं होगा।

प्रशन:

  1. क्यों System.Net.Http v 4.3.0 पैकेज में असंतुलन System.Net.Http.dll v 4.1.1 है, जबकि पहले सटीक संस्करण पैकेज 4.1.1 है?
  2. क्या हमें ऊपर उल्लिखित 2 में से किसी एक काम के साथ आगे बढ़ना चाहिए?
  3. इनमे से कौन बेहतर है?
  4. या: क्या इस समस्या का एक और हल है?
  5. या: क्या NuGet संकुल के लिए एक आसन्न अपडेट है जो असंगतता को ठीक करता है?

धन्यवाद।


मुझे लगता है कि यह मेरे अपने प्रश्न का उत्तर देने के लिए वास्तव में सही होगा क्योंकि जवाब का 99% पहले से ही मौजूद है।

गिटब / कोर एफएक्स पर विकास टीम ने इस मुद्दे के समाधान को स्वीकार किया System.Net.Http प्रोजेक्ट से System.Diagnostics.DiagnosticSource.dll के हार्ड संदर्भ को हटाने की प्रकृति के द्वारा एक और ज्ञात समस्या का एक साइड इफेक्ट होगा।

तब तक: व्यक्तिगत प्राथमिकताओं के आधार पर उपयोग करने के लिए दो प्रदान किए गए किसी भी काम करने के लिए ठीक है।