दिलचस्प पोस्ट
mysql_num_rows () पैरामीटर 1 को संसाधन होने की उम्मीद है, जावा में बड़ी फ़ाइलों को पढ़ें सास में चयनकर्ता के मध्य को संशोधित करना (वर्गों को जोड़ने / हटाने आदि) सी प्रोग्रामिंग में एफ्फ़्लुस (एसटीडीआई) क्या करता है? क्या PHP को थ्रेड करना है? स्प्रिंग बूट स्थिर सामग्री की सेवा नहीं दे रहा है रेल पर रूबी – एक CSV फ़ाइल से डेटा आयात करें Utf-8 को PHP डिफ़ॉल्ट एन्कोडिंग सेट करना? Postgres का उपयोग करते हुए एक समय में 3 तालिकाओं में डेटा डालें NotifyDataSetChanged को कॉल करने के बाद ListView में स्थिति बनाए रखना पूर्ण एंड्रॉइड अनुप्रयोग के लिए कस्टम फ़ॉन्ट जोड़ें एंड्रॉइड वेबव्यू वेबव्यू के भीतर खुले क्लिक करें, डिफ़ॉल्ट ब्राउज़र नहीं "स्ट्रिंग का समाधान नहीं किया जा सका" त्रुटि Eclipse के लिए सी ++ (ग्रहण मानक लाइब्रेरी को हल नहीं कर सकता है) क्यों एक संरचना उदाहरण से संपत्ति की निरंतर बाधाएं लेकिन कक्षा उदाहरण नहीं? सीमके में LINK_LIBRARIES की पुनरावर्ती सूची

गलत संदर्भित असेंबली संस्करण को चुनना

मैंने एक मौजूदा प्रोजेक्ट को एक ब्रांड नई मशीन पर कॉपी किया है, जिस पर इसे विकसित करना शुरू कर दिया है और मेरे एक संदर्भित विधानसभाओं (एक टेलरिक डीएलएल के रूप में ऐसा होता है) के संस्करण के साथ एक समस्या को चलाया है।

परियोजना मूल रूप से विधानसभा का एक पुराने संस्करण संदर्भित करती है (इसे v1.0.0.0 कहते हैं)। मेरी नई मशीन में विधानसभा का नवीनतम संस्करण स्थापित है, इसलिए मैंने सोचा कि मैं इसे अपडेट कर दूंगा (नया संस्करण v2.0.0.0 कॉल करू)।

अब यहां समस्या है: यदि मैं पुराने v1.0.0.0 dll को प्रोजेक्ट फ़ोल्डर में कॉपी करता हूं और इसे एक संदर्भ के रूप में जोड़ता हूं, तो वेब साइट समस्या के बिना लॉन्च करती है। अगर मैं उस संदर्भ को हटा देता हूं (और मेरे सिस्टम से पुराने डीएलएल को भी हटा देता है) और नया संस्करण (v2.0.0.0) जोड़ते हैं, तो पृष्ठ निम्न अपवाद दिखाता है:

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

स्पष्ट रूप से, कोड पुरानी संस्करण की तलाश कर रहा है और उसे नहीं मिल सकता है। पर क्यों?

मैंने उस संस्करण संख्या के समाधान फ़ोल्डर को ग्रिप किया और एक भी संदर्भ नहीं मिला। मैंने .csproj फ़ाइल के पाठ को दोगुना किया और पाया कि संस्करण सही तरीके से नवीनतम संस्करण दिखाता है और हिंटपाथ सही तरीके से नए डीएलएल का पथ दिखाता है। इसके अलावा, क्योंकि मैंने सिस्टम पर पुराने डीएलएल स्थापित नहीं किया है, यह मेरे जीएसी में दिखाई नहीं देता (हालांकि v2.0.0.0 करता है, जैसा कि अपेक्षित है)।

मैंने तब फ्यूजन लॉग दर्शक को यह समझने की कोशिश की कि वह उस पुराने संस्करण की तलाश क्यों कर रहा है, लेकिन कोई भाग्य नहीं है:

Assembly Load Trace: The following information can be helpful to determine why the assembly 'XXXXXX, Version=1.0.0.0, Culture=neutral, PublicKeyToken=121fae78165ba3d4' could not be loaded. === Pre-bind state information === LOG: User = MyComp\me LOG: DisplayName = XXXXXX, Version=1.0.0.0, Culture=neutral, PublicKeyToken=121fae78165ba3d4 (Fully-specified) LOG: Appbase = file:///d:/My Documents/Visual Studio 2010/Projects/CoolProj/WebApp/ LOG: Initial PrivatePath = d:\My Documents\Visual Studio 2010\Projects\CoolProj\WebApp\bin Calling assembly : WebApp, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null. === LOG: This bind starts in default load context. LOG: Using application configuration file: d:\My Documents\Visual Studio 2010\Projects\CoolProj\WebApp\web.config LOG: Using host configuration file: LOG: Using machine configuration file from C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\config\machine.config. LOG: Post-policy reference: XXXXXX, Version=1.0.0.0, Culture=neutral, PublicKeyToken=121fae78165ba3d4 LOG: Attempting download of new URL file:///C:/WINDOWS/Microsoft.NET/Framework/v4.0.30319/Temporary ASP.NET Files/root/90233b18/10d54998/XXXXXX.DLL. LOG: Attempting download of new URL file:///C:/WINDOWS/Microsoft.NET/Framework/v4.0.30319/Temporary ASP.NET Files/root/90233b18/10d54998/XXXXXX/XXXXXX.DLL. LOG: Attempting download of new URL file:///d:/My Documents/Visual Studio 2010/Projects/CoolProj/WebApp/bin/XXXXXX.DLL. WRN: Comparing the assembly name resulted in the mismatch: Major Version ERR: Failed to complete setup of assembly (hr = 0x80131040). Probing terminated. 

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

मेरे पुराने संस्करण की तलाश क्यों है? यह बुरा संदर्भ खोजने के लिए मैं और कहां खोज सकता हूँ?

वेब के समाधान से एकत्रित समाधान "गलत संदर्भित असेंबली संस्करण को चुनना"

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

क्या आप इस तरह से अपने web.config फ़ाइल में बाध्यकारी पुनर्निर्देशन में रख सकते हैं?

 <dependentAssembly> <assemblyIdentity name="Telerik" publicKeyToken="121fae78165ba3d4"/> <bindingRedirect oldVersion="1.0.0.0" newVersion="2.0.0.0"/> </dependentAssembly> 

मैं इस पर क्रिस कॉनवे के साथ हूं (उसे ऊपर उठाया)। समस्या यह है कि आप अपनी परियोजना में टेलरिक असेंबली में से एक को संदर्भित कर रहे हैं, जो उस संदर्भ में संदर्भित है जो वहां नहीं है।

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

दूसरा, आपकी प्रत्येक .proj फाइलों में (जैसे। Csproj) एक <reference include..> जिसमें टेलीरेक। वेब। यूआई फाइल को इंगित करता है। यह सामान्यतः एक संस्करण संख्या शामिल है। सुनिश्चित करें कि आप जो बिन फ़ोल्डर में डालते हैं वह संस्करण उस संस्करण से मेल खाता है।

तीसरा, सुनिश्चित करें कि आपकी सभी परियोजनाएं नवीनतम विधानसभा का उपयोग करती हैं यह भी सुनिश्चित करें कि वे जीएसी के स्थान पर एक स्थानीय पथ से विधानसभा को पकड़ रहे हैं। (मैं वास्तव में जीएसी को पसंद नहीं करता। इसके कारण मैंने कुछ परियोजनाओं पर मुद्दों का अंत नहीं किया है)। हम आम तौर पर एक "असेंबलियों" फ़ोल्डर होते हैं जो सभी प्रोजेक्ट बाहरी असेंबली संदर्भों के लिए उपयोग करते हैं।

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

पांचवां, आप web.config में असेंबलियों के लिए संस्करण संख्या रिबांड कर सकते हैं। runtime/assemblybinding अनुभाग में आप कुछ ऐसा इस्तेमाल कर सकते हैं, जो 2008 में तैनात हर टेलरिक असेंबली को आगे ले जाती है और इसे एक बहुत ही खास संस्करण में बताती है:

  <dependentAssembly> <assemblyIdentity name="Telerik.Web.UI" publicKeyToken="121fae78165ba3d4" /> <bindingRedirect oldVersion="2008.0.0.0-2020.0.0.0" newVersion="2010.02.0713.35" /> </dependentAssembly> 

मैंने अधिकांश जवाबों की कोशिश की लेकिन अभी भी इसे काम करने के लिए नहीं मिल सका। यह मेरे लिए काम किया:

संदर्भ पर राइट क्लिक करें -> गुण -> परिवर्तन 'विशिष्ट संस्करण' को गलत।

यहां छवि विवरण दर्ज करें

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

प्रयत्न:

  • अस्थायी परियोजना फ़ाइलें सफाई
  • निर्माण और obj फ़ाइलों की सफाई
  • C:\Users\USERNAME\.nuget\packages\ पर स्थापित पुराने संस्करणों को साफ करना C:\Users\USERNAME\.nuget\packages\

यह मेरे लिए काम किया

क्या आपके पास उस समाधान में कोई अन्य परियोजना है? (हो सकता है कि कोई अन्य प्रोजेक्ट पुराने संस्करण का संदर्भ दे रहा हो) आमतौर पर वीएस में, डीएल निर्भरता समाधान में सभी परियोजनाओं को फैलाती है

मेरी समस्या यह थी कि पुराने असेंबली वेब अनुप्रयोग के तहत _bin_deployableAssemblies फ़ोल्डर में थे इसका मतलब था कि इस परियोजना के निर्माण के दौरान पुराने विधानसभाओं ने जीएसी विधानसभाओं को अधिलेखित कर दिया था।

  1. सी पर जाएँ: \ WINDOWS \ Microsoft.NET \ फ्रेमवर्क \ v2.0.50727 \ CONFIG
  2. Machine.config फ़ाइल ढूंढें
  3. नोटपैड में खोलें
  4. संघर्ष dll मिल
  5. इसे निकालें और सहेजें।

संकलन विधानसभाएं

addassembly = dllName, संस्करण = 1.0.0000.0000 संस्कृति = तटस्थ, PublicKeyToken = "QWEWQERWETERY"

विधानसभाएं संकलन

मेरे लिये कार्य करता है।

यह एक स्पष्ट जवाब नहीं है कि क्यों, लेकिन हमें यह समस्या थी, यहां हमारी परिस्थितियां हैं और इसका हल क्या है:

देव 1:

समाधान में प्रोजेक्ट ए को एक NuGet पैकेज को संदर्भित करता है, और एक परियोजना को संदर्भित MVC प्रोजेक्ट ए सक्षम NuGet पैकेज पुनर्स्थापित करता है, फिर NuGet पैकेज को अद्यतन किया गया है। NuGet lib की शिकायत करते हुए एक रनटाइम त्रुटि मिली नहीं – लेकिन त्रुटि यह पुराने, गैर-अद्यतन संस्करण की तलाश में है। समाधान (और यह हास्यास्पद है): एमवीसी प्रोजेक्ट में कोड की पहली पंक्ति पर एक ब्रेकपॉइंट सेट करें जो कि परियोजना ए के साथ चरण F11 में कॉल करता है। हल – कभी एक समस्या फिर से नहीं थी

देव 2:

एक ही समाधान और परियोजनाएं, लेकिन जादू सेट ब्रेकपॉइंट और समाधान में कदम काम नहीं करता है। प्रत्येक संस्करण के लिए संस्करण पुनर्निर्देशन या इस Nuget पैकेज के अन्य बुरा संदर्भों को हटा दिया गया, पैकेज को हटा दिया और उसे पुनः स्थापित किया गया, मिटा दिया गया बिन, obj, asp.Net Temp, इसे हल नहीं किया गया। अंत में, प्रोजेक्ट ए का नाम बदलकर, एमवीसी प्रोजेक्ट – तय किया गया। इसे वापस अपने मूल नाम में बदल दिया गया, यह तय हो गया।

मुझे इस बात का कोई स्पष्टीकरण नहीं है कि उसने काम क्यों किया, लेकिन यह हमें एक गंभीर झोंका से बाहर निकाला।

यदि आप विजुअल स्टूडियो पर्यावरण (एएसपी.NET डेवलपमेंट सर्वर) से अनुप्रयोग को परीक्षण और / या डिबग करने में समस्या का अनुभव कर रहे हैं, तो विकास वेबसाइट फ़ोल्डर पर सभी अस्थायी फ़ाइलों को हटाने के लिए आवश्यक है। यह फ़ोल्डर जानने के लिए, विंडोज ट्रे आइकन पर एएसपी.नेट डेवलपमेंट सर्वर आइकन देखें (इसमें एक शीर्षक होना चाहिए: एएसपी.NET डेवलपमेंट सर्वर – पोर्ट ####), आइकन पर राइट क्लिक करें और शो चुनें विवरण; thn, क्षेत्र भौतिक पथ आपको बताएगा कि अस्थायी फ़ोल्डर क्या है, समस्या को हल करने के लिए सभी वस्तुओं को हटा दिया जाना चाहिए। निर्माण और फिर से वेबसाइट चलाने और समस्या हल होनी चाहिए (फिर से, विकास पर्यावरण के लिए हल)

मामले में किसी और को 3 घंटे बचाता है … मेरा मामला थोड़ा अलग था। मेरा कोड DevExpress v11.1 v11.1.4.0 उपयोग किया जाता है। मेरे पास यह सब मेरे कोड में ठीक से संदर्भित था। लेकिन .net मेमोरी प्रोफेलर जीएसी में स्थापित DevExpress v11.1 v11.1.12.0। वास्तव में यह घटकों को मैंने संदर्भित नहीं किया था, लेकिन जिन लोगों ने आंतरिक रूप से संदर्भित किया, वे विफल हो गए। जितना मैं कोशिश करता हूं, जीएसी हमेशा पहले की जाँच की जाती है। यह संकलित और ठीक चल रहा था लेकिन मैं जीत फॉर्म डिजाइनर को देख नहीं सकता था और स्टैक ट्रेस बिल्कुल भी मदद नहीं कर रहा था। अंत में अन्तःस्थापित .net मेमोरी प्रोफाइलर और सभी को पुनर्स्थापित किया गया था।

पुराने डेल से छुटकारा पाने के लिए आपके कंप्यूटर को मिटा देना चाहिए। मैंने पहले से सब कुछ करने की कोशिश की है और फिर मैंने अपने कंप्यूटर पर डीएलएल फ़ाइल के हर उदाहरण को हटाने और आवेदन से हर संदर्भ को निकालने के अतिरिक्त कदम उठाया। हालांकि, यह अभी भी ठीक से संकलित है और जब यह चलाता है यह DLL फ़ंक्शन को संदर्भित करता है ठीक है। मुझे आश्चर्य है कि अगर वह इसे किसी नेटवर्क ड्राइव से कुछ हीरे से संदर्भित कर रहा है I

उसी डीएलएल के विभिन्न संस्करणों का संदर्भ देने वाले किसी अनुप्रयोग के दो संस्करणों के बीच स्विच करते समय मेरे पास एक ही संदेश था हालांकि मैं अलग-अलग फ़ोल्डरों में परीक्षण कर रहा था, लेकिन मैं ग़लती से पुराने संस्करण की तुलना में नए संस्करण की नकल की।

तो पहली बात यह है कि अनुप्रयोग के फ़ोल्डर में संदर्भित DLL का संस्करण है। शायद ज़रुरत पड़े।

शायद यह मदद करता है या शायद नहीं मैंने अपने डिबग और रिलीज़ संस्करण को साफ किया तो मैंने ओबीजे फ़ोल्डर का नाम बदल दिया। यह आखिरकार मुझे मिला था। पिछला चरण मूल रूप से प्रोजेक्ट को संदर्भ हटा रहा था और उन्हें प्रोजेक्ट गुणों में वापस जोड़ना था।

मुझे न्यूटोंसंसफ्ट के विभिन्न संस्करणों को संदर्भित करने वाले विभिन्न विधानसभाओं के साथ एक ही समस्या थी। मेरे लिए काम करने वाला हल अद्यतन पैकेज पैकेज चल रहा था Nuget Package Manager Console।