[.net] चेतावनी: एक ही निर्भर असेंबली के विभिन्न संस्करणों के बीच संघर्ष मिला


Answers

असल में ऐसा तब होता है जब आप जिन असेंबली का संदर्भ ले रहे हैं, उनमें "कॉपी स्थानीय" सेट को "ट्रू" पर सेट किया गया है, जिसका अर्थ है कि डीएलएल की एक प्रति आपके एक्सई के साथ बिन फ़ोल्डर में रखी गई है।

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

जिस तरह से मैंने इसे प्राप्त किया है, वह असेंबली परियोजनाओं में संदर्भों के लिए स्थानीय को कॉपी करने के लिए गलत सेट करना है। केवल निष्पादन योग्य / वेब अनुप्रयोगों के लिए ऐसा करें जहां आपको तैयार उत्पाद के लिए असेंबली की आवश्यकता है।

उम्मीद है कि समझ में आता है!

Question

मैं वर्तमान में एक .NET अनुप्रयोग विकसित कर रहा हूं, जिसमें 20 परियोजनाएं शामिल हैं। इनमें से कुछ परियोजनाओं को .NET 3.5 का उपयोग करके संकलित किया गया है, कुछ अन्य अभी भी .NET 2.0 प्रोजेक्ट्स हैं (अभी तक कोई समस्या नहीं है)।

समस्या यह है कि यदि मैं बाहरी घटक शामिल करता हूं तो मुझे हमेशा निम्न चेतावनी मिलती है:

"Found conflicts between different versions of the same dependent assembly".

इस चेतावनी का वास्तव में क्या अर्थ है और क्या इस चेतावनी को बाहर करने की संभावना हो सकती है (जैसे #pragma स्रोत-कोड फ़ाइलों में अक्षम) का उपयोग करना?




यह वास्तव में आपके बाहरी घटक पर निर्भर करता है। जब आप .NET अनुप्रयोग में बाहरी घटक का संदर्भ देते हैं तो यह उस घटक की पहचान करने के लिए एक GUID उत्पन्न करता है। यह त्रुटि तब होती है जब आपके किसी एक प्रोजेक्ट द्वारा संदर्भित बाहरी घटक का नाम समान होता है और अन्य संस्करण में अन्य घटक के रूप में अलग-अलग संस्करण होता है।

यह कभी-कभी होता है जब आप संदर्भ ढूंढने के लिए "ब्राउज़ करें" का उपयोग करते हैं और असेंबली के गलत संस्करण को जोड़ते हैं, या आपके पास स्थानीय कोड में इंस्टॉल किए गए कोड के रूप में आपके कोड रिपॉजिटरी में घटक का एक अलग संस्करण होता है।

यह जानने का प्रयास करें कि कौन सी परियोजनाओं में इन विवादों का सामना किया गया है, संदर्भ सूची से घटकों को हटाएं, फिर उन्हें फिर से जोड़ें ताकि आप सुनिश्चित कर सकें कि आप एक ही फ़ाइल पर इंगित कर रहे हैं।




=> जांचें कि आंशिक रूप से इंस्टॉल किए गए एप्लिकेशन का कुछ उदाहरण होगा।

=> पहले अनइंस्टॉल करें एप्लिकेशन से अनइंस्टॉल करें।

=> फिर, साफ, पुनर्निर्माण, और तैनाती करने की कोशिश करें।

इसने मेरा मुद्दा हल किया। यह आपको भी मदद करता है। सादर।




विचार करने और जांचने की एक और बात यह है कि सुनिश्चित करें कि आपके पास उस बिन फ़ोल्डर का उपयोग करने वाली कोई भी सेवा नहीं है। अगर वे सेवा बंद कर देते हैं और समाधान पुनर्निर्माण करते हैं




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




मेरी परियोजनाओं में से एक के साथ मुझे भी यही समस्या थी, हालांकि, उपर्युक्त में से कोई भी चेतावनी को हल करने में मदद नहीं करता था। मैंने विस्तृत बिल्ड लॉगफाइल की जांच की, मैंने यह सत्यापित करने के लिए AsmSpy का उपयोग किया कि मैंने प्रभावित समाधान में प्रत्येक प्रोजेक्ट के लिए सही संस्करणों का उपयोग किया है, मैंने प्रत्येक प्रोजेक्ट फ़ाइल में वास्तविक प्रविष्टियों की दोबारा जांच की - कुछ भी मदद नहीं की।

आखिरकार यह पता चला कि समस्या एक परियोजना में मेरे संदर्भों में से एक की घोंसला निर्भरता थी। इस संदर्भ (ए) बदले में (बी) का एक अलग संस्करण आवश्यक था जिसे मेरे समाधान में अन्य सभी परियोजनाओं से सीधे संदर्भित किया गया था। संदर्भित परियोजना में संदर्भ को अद्यतन करने से इसे हल किया गया।

Solution A
+--Project A
   +--Reference A (version 1.1.0.0)
   +--Reference B
+--Project B
   +--Reference A (version 1.1.0.0)
   +--Reference B
   +--Reference C
+--Project C
   +--Reference X (this indirectly references Reference A, but with e.g. version 1.1.1.0)

Solution B
+--Project A
   +--Reference A (version 1.1.1.0)

मुझे आशा है कि उपर्युक्त दिखाता है कि मेरा क्या मतलब है, मुझे पता लगाने के लिए कुछ घंटे लग गए, इसलिए उम्मीद है कि किसी और को भी फायदा होगा।




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




Links