CS1705 त्रुटि: "जिसमें संदर्भित असेंबली की तुलना में अधिक संस्करण है"


109

मैं इसे अब थोड़ा देख रहा हूं और इसे हल नहीं किया है। मुझे निम्न त्रुटि संदेश मिलता है:

Compiler Error Message: CS1705: Assembly 'My.Model, Version=1.1.4422.23773, Culture=neutral, 
PublicKeyToken=bfde95ba233094b2' uses 
'Common, Version=3.3.4273.24368, Culture=neutral, PublicKeyToken=bfde95ba233094b2' 
which has a higher version than referenced assembly
'Common, Version=3.3.4269.17112, Culture=neutral, PublicKeyToken=bfde95ba233094b2'

c:\WINDOWS\assembly\GAC_MSIL\Common\3.3.4269.17112__bfde95ba233094b2\Common.dll: 
(Location of symbol related to previous error)

वेब सर्वर Server 2003 चला रहा है। मैं c: \ windows \ असेंबली में गया और वास्तव में ध्यान दिया कि Common.dll के 3 संस्करण सूचीबद्ध थे। सूचीबद्ध उच्चतम संस्करण 3.3.4269.17112 था

मैंने संस्करण के साथ dll की प्रतिलिपि बनाई: 3.3.4273.24368 विधानसभा निर्देशिका में। फिर मैंने अपने कोड को फिर से संकलित किया और फिर से तैनात किया (शायद ओवरकिल लेकिन ओह अच्छी तरह से)। जब मैंने एक नए सत्र में अपना ब्राउज़र खोला और फिर से साइट URL पर गया तो मुझे अभी भी वही संदेश मिला।

मैं विंडोज़ एक्सप्लोरर का उपयोग कर सकता हूं और उच्च-संस्करण वाले कॉमनोडल को सत्यापित कर सकता हूं।

इस समस्या को हल करने के लिए मैं और क्या देख सकता हूं? मैं पुराने संस्करण की ओर संकेत करने के लिए अपनी असेंबली में संदर्भ बदलना नहीं चाहता।


2
पागल *.*संस्करण संख्या। सब कुछ पुनर्निर्माण करें, केवल सुनिश्चित होने का तरीका।
हंस पसंत

जवाबों:


39

आपके द्वारा कोशिश करने के लिए 3 विचार:

  1. सुनिश्चित करें कि आपके सभी dll समान कॉमन संस्करण के विरुद्ध संकलित किए गए हैं।
  2. जांचें कि आपके पास फ़ाइल संदर्भों के बजाय आपके समाधान में परियोजना संदर्भ हैं।
  3. अपने web.config में बाध्यकारी पुनर्निर्देशन का उपयोग करें । ( मूल रूप से लिंक किए गए संस्करण वेबैक मशीन पर )


68

मुझे यह त्रुटि आई क्योंकि "पुनर्निर्माण" वास्तव में पुनर्निर्माण नहीं था।

समाधान: विज़ुअल स्टूडियो को बंद करें, वास्तव में जाएं और बिन फ़ोल्डर को हटा दें, फिर पुनर्निर्माण करें, यह बेहतर काम कर सकता है।

इसके अलावा, कभी-कभी विज़ुअल स्टूडियो संदर्भों के बारे में झूठ बोलते हैं, इसलिए HintPathअपनी .csprojफ़ाइलों में जांच करें।


2
इसने मेरी बेकन को बचा लिया। स्थानीय चलना ठीक था, लेकिन मैंने एक बदलाव प्रकाशित किया और चीजें निरापद हो गईं। ऑनलाइन बिन फ़ोल्डर की सामग्री को हटाने से चीजों को सिंक में वापस लाने के लिए मजबूर होना पड़ा। धन्यवाद!
pstan

40

यदि आप NuGet का उपयोग कर रहे हैं, तो यह 'समाधान के लिए NuGet पैकेज प्रबंधित करें' पर जाने के लायक है , जो उन पैकेजों को ढूंढ रहा है जो समस्याएँ पैदा कर रहे हैं और अद्यतन मार रहे हैं। इसके बाद सभी पैकेजों को नवीनतम संस्करण में लाना चाहिए और समस्या का समाधान करना चाहिए।

एक शॉट लायक है क्योंकि यह एक त्वरित और आसान है।


2
यह मेरे लिए इसे हल किया, धन्यवाद। हालांकि मेरी स्थिति थोड़ी अलग थी: इसे अपडेट में सूचीबद्ध नहीं किया गया था इसलिए मुझे स्थापित करने के लिए जाना था और एक खिड़की थी जो प्रति प्रोजेक्ट पैकेज संस्करण दिखाती थी। मैं कुछ पुराने मॉड्यूल को cms के एक नए संस्करण में अपग्रेड कर रहा था इसलिए मुझे समस्या पैकेज पर जाना पड़ा, उन्हें चुनना और इंस्टॉल पर क्लिक करना। हो सकता था क्योंकि nuget का उपयोग करने के लिए cms अभी बदल गया था, लेकिन आपने मुझे बहुत थकाऊ csprojसंपादन बचा लिया !
rtpHarry

3
प्रोजेक्ट स्तर के बजाय समाधान स्तर पर NuGet संकुल को अद्यतन करना सुनिश्चित करें।
जेस

2
यह निश्चित रूप से सभी तरीकों से स्वीकृत उत्तर होना चाहिए, मैंने इसे नहीं पढ़ा लेकिन मेरे समाधान में अनायास ही कोशिश की, जो एक आकर्षण की तरह काम करता था।
बेमेक्स

30

मेरी समस्या यह थी कि मेरे पास एक ही dll की 2 अलग-अलग प्रतियों को संदर्भित करने वाली 2 परियोजनाएं थीं जिनके अलग-अलग संस्करण थे। मैंने उन दोनों को हटाकर यह सुनिश्चित किया कि वे एक ही dll फ़ाइल का संदर्भ दे रहे हैं।


13

एक संभावित कारण यह है कि दूसरी विधानसभा जीएसी में स्थापित है, जबकि पहली विधानसभा, एक उच्च संस्करण संख्या के साथ, परियोजना के संदर्भ में जोड़ा जाता है। इसे सत्यापित करने के लिए, प्रोजेक्ट संदर्भ में असेंबली को डबल क्लिक करें, और जाँचें कि ऑब्जेक्ट ब्राउज़र में समान नाम के साथ कोई अन्य असेंबली है।

यदि ऐसा है, तो GAC से दूसरी असेंबली की स्थापना रद्द करने के लिए gacutil.exe सुविधा का उपयोग करें। उदाहरण के लिए, यदि ये 64-बिट असेंबली हैं:

C:\Program Files\Microsoft SDKs\Windows\v6.0A\Bin\x64\gacutil.exe -u <assembly_name>

दो साल बाद और आपके सुझाव ने एक आकर्षण की तरह काम किया। ऑब्जेक्ट ब्राउज़र में संदर्भों को देखते हुए इसे क्रमबद्ध किया।
ceebreenk

3

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


2

मेरी टीम बस हमारे निर्माण के माहौल में इस समस्या में भाग गई। मुद्दा <। HintPath> .csproj फ़ाइल के तत्व में अंतर के कारण था।

हमारी आम सभा के पास हमारी संदर्भ असेंबलियों वाली निर्देशिका के लिए एक सही सापेक्ष मार्ग था। आश्रित विधानसभा में एक पूर्व निर्देशिका संरचना से एक रास्ता था। जीएसी मशीनों के सफलतापूर्वक समाधान को संकलित किया गया क्योंकि GAC ने C: \ Program Files में इंस्टॉल किए गए सही संस्करण के लिए निर्भरता के संदर्भ को हल किया। निर्माण के माहौल में विधानसभा की विरासत स्थापित थी (भले ही इसके पास कोई नहीं होना चाहिए) कि यह वापस गिर गया और इस तरह त्रुटि हुई। पाठ संपादक में <HintPath> को अपडेट करने से समस्या ठीक हो गई।


2

समस्या देखी जाती है अगर समाधान के भीतर कई परियोजनाओं में नगेट पैकेज भिन्न होते हैं।

आप समाधान में सभी परियोजनाओं के साथ एक सामान्य संस्करण में नौगेट संकुल को अद्यतन करके इसे ठीक कर सकते हैं


1

इसी तरह की समस्या थी। मेरा मुद्दा यह था कि मेरे पास एक ही समाधान के भीतर कई परियोजनाएं थीं जिनमें से प्रत्येक एक DLL के विशिष्ट संस्करण लेकिन विभिन्न संस्करणों को संदर्भित कर रहे थे। समाधान सभी संदर्भों के गुणों में झूठे के लिए 'विशिष्ट संस्करण' सेट करना था।


1

मुझे पता है कि यह कुछ समय पहले पूछा गया था, उपरोक्त कुछ चरणों को आजमाने के बाद। निम्नलिखित चरणों और इस लेख से मुझे क्या मदद मिली ।

मैंने संदर्भ स्थित किया और PublicKeyToken को पुराने वाले के संदर्भ में बदल दिया।

मुझे उम्मीद है कि इससे भी मदद मिलेगी।


1

मेरी भी यही त्रुटि थी। मैंने Microsoft.AspNetCore.ALLपरीक्षण परियोजना में स्थापित करने के बाद त्रुटि को ठीक किया ।


0

हस्त dll के संग्रह फ़ोल्डर
आप समाधान विभिन्न पुस्तकालयों से dll-फ़ाइलों के लिए एक कचरा फ़ोल्डर है
lib, source, libs, आदि
आप दृश्य स्टूडियो में अगर आप अपने समाधान (एक एफआईआर समय के लिए) खोल देंगे इस मुसीबत मिल सकती है। और आपके dll का संग्रह फ़ोल्डर किसी भी तरह से छूट गया है या एक ठोस dll-file छूट गई है।

विजुअल स्टूडियो चुपचाप अपने दम पर कुछ के लिए dll के संदर्भ को बदलने की कोशिश करेगा। यदि VS सफल होगा तो एक नया संदर्भ आपके स्थानीय समाधान के लिए लगातार रहेगा। अन्य क्लोन / चेकआउट के लिए नहीं।

यानी आपकी <HintPath>अनदेखी की जाएगी और आप प्रोजेक्ट फ़ाइल (.csproj) को नहीं बदला जाएगा।
मेरे उदाहरण के रूप में

<Reference Include="DocumentFormat.OpenXml, Version=2.0.5022.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
  <SpecificVersion>False</SpecificVersion>
  <HintPath>..\..\..\lib\DocumentFormat.OpenXml.dll</HintPath>
</Reference>

DocumentFormat.OpenXmlसे संदर्भित किया जाएगा C:\Program Files (x86)\Open XML SDK\V2.5\libएक से नहीं solution\..\libफ़ोल्डर।

फास्ट वर्कअराउंड

  • चेक करें और आपको dll के एकत्रित फ़ोल्डर को पुनर्स्थापित करें
  • सोल्यूशन एक्स्प्लोरर से अनलोड प्रोजेक्ट , फिर रिलोड प्रोजेक्ट

सही समाधान NuGet पैकेज प्रबंधक पर माइग्रेट करना है।


0

SharePoint के लिए, सुनिश्चित करें कि आपके रूट फ़ोल्डर के अंतर्गत आपके DLL के साथ "बिन" फ़ोल्डर नहीं है, यदि ऐसा है तो बस इसे हटा दें। (और वीएस में झूठी "कॉपी लोकल" बदलें)।


0

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

मैंने कुछ समय अपने समाधान में सभी संदर्भों को देखने से पहले यह महसूस करने में बिताया कि मैं web.config फ़ाइल में संदर्भों के बारे में भूल गया था।


0

मैं UnitTestingProject के साथ एक ही मुद्दा था, जहां MainProject में मैं "System.Web.Mvc, Version = 3.0.0.0" का उपयोग कर रहा था और UnitTestingProject में मैं "System.Web.Mvc, Version = 3.0.0.1" का उपयोग कर रहा था।

निम्नलिखित में बदलें <Reference Include="System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"> <HintPath>..\packages\Microsoft.AspNet.Mvc.3.0.50813.1\lib\net40\System.Web.Mvc.dll</HintPath> </Reference>


0

इप्सिवर फाइंड को हमारी साइट में जोड़ने और इप्सिवर फाइंड के लिए इसी NuGet पैकेज को स्थापित करने के बाद मुझे यह मिला।

यह तय करना आसान था: सभी एप्साइवर संबंधित ऐड-ऑन को अपडेट करें (भले ही वे असंबंधित प्रतीत हों: CMS, CMS.TinyMCE, CMS.UI, आदि)

सभी संभव एप्साइवर ऐड-ऑन को अपडेट करने और पुन: जमा करने के बाद, त्रुटि दूर हो गई।


0

मेरे परिदृश्य में, मैंने अपने डॉटनेटकोर ऐप के लिए .csproj फ़ाइल को संपादित किया। मैंने देखा कि TargetFramework टैग में netcoreapp2.1 का मान और RuntimeFrameworkVersion टैग का मान 2.0.0 था । इसलिए मैंने RuntimeFrameworkVersion को 2.1.0 में बदल दिया, वीएस को फिर से सहेजा, फिर से बनाया और फिर त्रुटियों को हल किया।

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

शुभ लाभ,

Sugeshan


-1

अपने प्रोजेक्ट में संदर्भ पाएंSystem.Web.Mvc संस्करण की जाँच करें।

उसके बाद राइट क्लिक रेफरेंस -> असेंबली और सर्च सिस्टम . web.mvc और इसे सेटअप करें

समस्या इन विधानसभाओं के विभिन्न संस्करणों का कारण बनती है ।

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

महत्वपूर्ण अद्यतन Microsoft.AspNet.Mvc और Microsoft.Net.Compilers है इसे मत भूलना!


-1

हमारी टीम में हम अलग-अलग कंप्यूटरों पर काम कर रहे थे। किसी ने अपडेट किया dllऔर मेरे पास नहीं था। मैंने सिर्फ अपनी निर्भरता के संदर्भ और समस्या को हल किया।


-3

मुझे इसी तरह की समस्या थी, मैंने एक DLL, यानी A.dll बनाया था, जिसने अन्य DLL, यानी B.dll का संदर्भ दिया।

मैंने एक आवेदन C.exe बनाया और DLLs A.dll और B.dll को संदर्भित किया।

समाधान - c.exe से B.dll का संदर्भ हटाने पर मैं समस्या को ठीक करने में सक्षम था।

उम्मीद है की यह मदद करेगा।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.