मुझे SQL सर्वर प्रतिकृति प्रोजेक्ट पर "एक प्रोग्राम को एक गलत प्रारूप के साथ लोड करने के लिए एक त्रुटि" करने का प्रयास किया गया था


318

सटीक त्रुटि निम्नानुसार है

फ़ाइल या असेंबली को लोड नहीं कर सका 'Microsoft.SqlServer.Replication, संस्करण = 9.0.242.0, संस्कृति = तटस्थ, PublicKeyToken = 89845dcd8080cc91' या इसकी एक निर्भरता। एक कार्यक्रम को एक गलत प्रारूप के साथ लोड करने का प्रयास किया गया था।

मैंने हाल ही में इस परियोजना पर दो महीने के लिए फिर से एक और परियोजना के लिए काम करना शुरू कर दिया है। इसने पहले पूरी तरह से काम किया, और मैंने सभी संदर्भों की दोबारा जाँच की।

जवाबों:


405

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

स्रोत: http://www.alexjamesbrown.com/uncategorized/could-not-load-file-or-assembly-chilkatdotnet2-or-one-of-its-d dependencies-an-attempt-was-made-to- load- एक-कार्यक्रम-साथ-एक-गलत प्रारूप /

अपने स्थानीय मशीन पर चलने के लिए एक एप्लिकेशन सेट करते समय (विस्टा 64 बिट चलाने पर) मुझे इस त्रुटि का सामना करना पड़ा:

फ़ाइल या असेंबली ChilkatDotNet2या उसकी किसी एक निर्भरता को लोड नहीं किया जा सका । एक प्रोग्राम को एक गलत प्रारूप के साथ लोड करने का प्रयास किया गया था।

जाहिर है, एप्लिकेशन चिलकैट घटकों का उपयोग करता है , लेकिन ऐसा लगता है कि हम जिस संस्करण का उपयोग कर रहे हैं, वह केवल 32 बिट संस्करण है।

इस त्रुटि को हल करने के लिए, मैंने 32 बिट अनुप्रयोगों की अनुमति देने के लिए IIS में अपना ऐप पूल सेट किया। IIS प्रबंधक खोलें, ऐप पूल पर राइट क्लिक करें, और उन्नत सेटिंग्स चुनें (नीचे देखें)

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

फिर "True पर 32-बिट एप्लिकेशन सक्षम करें" सेट करें।

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

सब कुछ कर दिया!


क्या यह पूरे एप्लिकेशन पूल को 32-बिट के रूप में चलाने का कारण होगा, और पूर्ण 64-बिट नहीं? 64-बिट / सभी प्लेटफार्मों के लिए निर्भरता को फिर से संकलित करना एक बेहतर समाधान होगा? एनएफओपी के कारण मुझे यह समस्या हो रही है, लेकिन चूंकि यह खुला स्रोत है, इसलिए मैं इसे फिर से संकलित कर सकता हूं।
जैमीबारो

2
लिंक काम नहीं करता है, लेकिन आपकी व्याख्या मेरी समस्या को हल करने के लिए पर्याप्त थी। +1
एंड्रयू शेफर्ड

32-बिट अनुप्रयोगों को सक्षम करने के निर्देशों के साथ लिंक: blogs.msdn.com/b/rakkimk/archive/2007/11/03/…
ब्रैंडन एस

15
यह ध्यान देने योग्य हो सकता है कि यह AppPool समाधान केवल ASP.NET अनुप्रयोगों पर लागू होता है - कुछ devs को भ्रमित कर सकता है जो कभी भी ASP.NET या IIS का उपयोग / कॉन्फ़िगर नहीं करते हैं।
गलकटर

इसे IIS7 में केवल IIS7.5 में ठीक नहीं किया जाता है
फ्लेवर्डस्केप

120

मैंने इसका हल ढूंढ लिया है। मैंने हाल ही में अपनी मशीन को विंडोज 2008 सर्वर 64-बिट में अपग्रेड किया है। SqlServer.Replication नाम स्थान 32-बिट प्लेटफ़ॉर्म के लिए लिखा गया था। इसे फिर से चालू करने के लिए मुझे केवल प्रोजेक्ट बिल्ड प्रॉपर्टीज में टारगेट प्लेटफ़ॉर्म को X86 पर सेट करना था।


मैं एक DLL के साथ यह समस्या आ रही है, लेकिन मेरे प्रोजेक्ट> HDP गुण ... में "बिल्ड" टैब नहीं है (प्रतीत होता है कि सब कुछ लेकिन, ऐसा नहीं है)। कंपाइल और डीबग दोनों टैब में एक "प्लेटफ़ॉर्म" ड्रॉपडाउन है, लेकिन दोनों मामलों में ड्रॉपडाउन में एकमात्र आइटम "एक्टिव (कोई भी सीपीयू)" है।
बी क्ले शैनन

मैं उपरोक्त समस्या का उलटा सामना करने के लिए हुआ। मेरे पास सब कुछ 64 बिट में चल रहा था और मेरा बिल्ड टारगेट कोई भी सीपीयू था। जब मैंने इसे 64-बिट में बदल दिया तो यह पूरी तरह से ठीक काम कर गया :)
मधुर गांडी

87

अपने वेब प्रोजेक्ट के संपत्ति पृष्ठ पर प्लेटफ़ॉर्म लक्ष्य के लिए मान बदलें Any CPU

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


कोई प्रभाव नहीं है, दुर्भाग्य से।
जोनाथन

4
मैं गलत था - यह काम किया, जब मैंने अपने सभी 'बिन' फ़ोल्डरों से छुटकारा पा लिया। धन्यवाद!
जोनाथन

मेरी समस्या भी तय की, लेकिन मेरे समाधान में हर परियोजना के लिए ऐसा करने के बाद ही। उल्लिखित चरण C # परियोजनाओं के लिए हैं। VB.NET परियोजनाओं के लिए, प्रोजेक्ट गुण> संकलन> उन्नत संकलन विकल्प> लक्ष्य CPU को "AnyCPU" में बदलें
फ्रेंकोइस बोथा

6
मेरे मामले में, परियोजना पहले से ही "किसी भी सीपीयू" को लक्षित कर रही थी। लेकिन मैं 64-बिट विंडोज चला रहा हूं और पुराने स्कूल हार्डवेयर ड्राइवर DllImport की कोशिश कर रहा था। विशेष रूप से लक्ष्य को x86 में बदलते हुए इसे मेरे लिए तय किया।
bsegraves

मेरे मामले में, मैं x64 के तहत भागना चाहता था। यह काम नहीं कर रहा था। सभी सिफारिशों को बदलने के बाद, मुझे वेब के तहत 'गवाह' को भी x64
SKCS कमल में बदलना पड़ा

52

IIS -> एप्लिकेशन पूल -> एडवांस सेटिंग्स -> 32-बिट एप्लिकेशन सक्षम करें


क्ले, आप किस IIS संस्करण का उपयोग कर रहे हैं?
हरपाल

23

विजुअल स्टूडियो से कोड को चलाने का प्रयास करने पर हमारे पास हाल ही में समस्या थी। उस स्थिति में आपको
टूल्स> विकल्प> प्रोजेक्ट्स और सॉल्यूशंस> वेब प्रॉजेक्ट्स करने की जरूरत है और "वेब साइटों और प्रोजेक्ट्स के लिए IIS एक्सप्रेस के 64 बिट संस्करण का उपयोग करें" की जांच करें।


1
यह वही है जो अंततः मेरे लिए काम करता है। विशेष रूप से सर्विस फैब्रिक पुस्तकालयों के साथ वेब एपीआई को डिबग करने की कोशिश कर रहे लोगों के लिए !!! यदि आप अपने प्रोजेक्ट में किसी भी सर्विस फैब्रिक DLL का उपयोग कर रहे हैं, तो सुनिश्चित करें कि आप उपरोक्त समाधान का उपयोग कर रहे हैं।
क्रिस दत्ता

यह केवल समाधान है कि मेरे लिए काम किया है। धन्यवाद। : डी
जेरेमी खरीदार

मेरे लिए भी काम करो!
C

11

Visual Studio के भीतर ही ASP.NET MVC 3 परियोजना में यह त्रुटि पाने वालों के लिए :

ASP.NET MVC 3 ऐप में मैं जिस पर काम कर रहा हूं, मैंने एक प्रॉब्लम को हल करने के लिए Microsoft.SqlServer.BatchParser को एक प्रॉजेक्ट में जोड़ने का प्रयास किया, जहां वह परिनियोजन सर्वर पर अनुपलब्ध था। (हमारा ऐप एसएमओ का उपयोग करता है; एसक्यूएल सर्वर नेटिव क्लाइंट और तैनाती सर्वर पर कुछ अन्य चीजें स्थापित करने के लिए सही समाधान था।)

BatchParser का संदर्भ हटाए जाने के बाद भी, मुझे "ASP प्रयास किया गया ..." त्रुटि प्राप्त होती रही, BatchParser DLL को संदर्भित करते हुए, मेरे द्वारा खोले गए प्रत्येक ASP.NET MVC 3 पृष्ठ पर, और उस त्रुटि के बाद पेज पार्सिंग के दर्जनों भाग आए। त्रुटियों।

यदि आपके साथ ऐसा होता है, तो एक फ़ाइल खोज करें और देखें कि क्या DLL अभी भी आपके प्रोजेक्ट के \ bin फ़ोल्डरों में से एक है। यहां तक ​​कि अगर आप एक पुनर्निर्माण करते हैं, तो भी विजुअल स्टूडियो आपके सभी बिन फ़ोल्डर में सब कुछ स्पष्ट नहीं करता है। जब मैंने DLL को बिन से हटा दिया और फिर से बनाया, तो त्रुटि दूर हो गई।


मैंने सिर्फ एक पुनर्निर्माण किया और DLL को मैन्युअल रूप से हटाने के बिना समस्या चली गई। धन्यवाद!
ट्रेवर

4

आईआईएस एक्सप्रेस के खिलाफ विंडोज 10 में एमवीसी 5 ऐप में मेरे पास यह था। मेरा समाधान निम्नलिखित था:

  • उपकरण =>
    • विकल्प =>
      • परियोजनाओं और समाधान =>
        • वेब प्रोजेक्ट =>
          • वेब साइटों और परियोजनाओं के लिए IIS एक्सप्रेस के 64 बिट संस्करण का उपयोग करें

3

इसे 32-बिट में बदल दें (सत्य) यह काम करता है

अगर आपको यह लंबाई शून्य से कम नहीं मिल सकती है। पैरामीटर नाम: आईआईएस सर्वर विन्यास में लंबाई का मुद्दा सरल काम करता है कनेक्शन स्ट्रिंग को वेब में बदलें। अपने एसक्यूएल सर्वर नाम और सर्वर नाम की तरह फाइल फाइल और आईआईएस को पुनरारंभ करें फिर उस पृष्ठ को लोड करने का प्रयास करें जो यह काम करता है


2

यदि विजुअल स्टूडियो 2012 में प्रकाशन करते समय प्रकाशन विज़ार्ड में "प्रोकेलिवल फॉर पब्लिशिंग" विकल्प को अनचेक करने का प्रयास करें।

अन-चेक "प्रकाशन के दौरान Precompile"


0

विंडोज़ में एप्लिकेशन मैं ऐसा करता हूं, प्रोजेक्ट-> गुण-> बिल्ड-> चेक को 32-बिट चेकबॉक्स पर राइट-क्लिक करें। सबको शुक्रीया


0
  1. यहां स्थित अस्थायी परीक्षण निर्देशिका को हटाएं: C: \ Users (उपयोगकर्ता) \ AppData \ Local \ Temp \ VisualStudioTestExplorerExtensions \

  2. सभी प्रोजेक्ट्स को Visual Studio में x64 पर सेट करें

  3. डिफ़ॉल्ट प्रोसेसर आर्किटेक्चर को x64 पर सेट करें (टेस्ट / टेस्टसेटिंग / डिफ़ॉल्ट प्रोसेसर आर्किटेक्चर)।

समाधान फ़ाइल बनाने के लिए साफ करना सुनिश्चित करें। यह मदद करता है!


0

.NET फ्रेमवर्क 4.7.1 से 4.6.2 तक प्रोजेक्ट प्रॉपर्टीज में टारगेट फ्रेमवर्क को बदलना मेरे लिए काम कर गया।

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