ফাইল বা সমাবেশ 'সিস্টেম.ডাটা.এসকিউএলাইট' লোড করা যায়নি


126

আমি আমার এএসপি.এনইটি প্রকল্পে ELMAH 1.1। নেট 3.5 x64 ইনস্টল করেছি এবং এখন আমি এই ত্রুটিটি পাচ্ছি (যখনই আমি কোনও পৃষ্ঠা দেখার চেষ্টা করব):

ফাইল বা সমাবেশ 'সিস্টেম.ডাটা.এসকিউএল, সংস্করণ = 1.0.61.0, সংস্কৃতি = নিরপেক্ষ, পাবলিককি টোকেন = db937bc2d44ff139' বা এর অন্যতম নির্ভরতা লোড করা যায়নি। একটি ভুল ফর্ম্যাট সহ একটি প্রোগ্রাম লোড করার চেষ্টা করা হয়েছিল।

বর্ণনা: বর্তমান ওয়েব অনুরোধটি কার্যকর করার সময় একটি অযৌক্তিক ব্যতিক্রম ঘটেছে। ত্রুটিটি এবং কোডটি এর উত্পন্ন কোথায় হয়েছিল সে সম্পর্কে আরও তথ্যের জন্য দয়া করে স্ট্যাক ট্রেস পর্যালোচনা করুন।

ব্যতিক্রমের বিবরণ: সিস্টেম.বিডিআইমেজ ফরমেট এক্সসেপশন: ফাইল বা সমাবেশ 'সিস্টেম.ডাটা.এসকিউএল, সংস্করণ = 1.0.61.0, সংস্কৃতি = নিরপেক্ষ, পাবলিক্যকিটোকেন = db937bc2d44ff139' বা এর অন্যতম নির্ভরতা লোড করা যায়নি। একটি ভুল ফর্ম্যাট সহ একটি প্রোগ্রাম লোড করার চেষ্টা করা হয়েছিল।

নীচে আরও ত্রুটির বিশদ।

আমার অ্যাক্টিভ সলিউশন প্ল্যাটফর্মটি "যে কোনও সিপিইউ" এবং আমি একটি এক্স 64 উইন্ডোজ 7 এ একটি এক্স 64 এ অবশ্যই চালাচ্ছি, প্রসেসর। আমরা ELMAH এর এই সংস্করণটি ব্যবহার করার কারণটি হ'ল 1.0। নেট 3.5 (x86, এটিই একমাত্র প্ল্যাটফর্ম যা এটি সংকলিত হয়েছে) আমাদের x64 উইন্ডোজ সার্ভারে এই একই ত্রুটিটি দিয়েছে।

আমি x86 এবং x64 এর জন্য সংকলনের চেষ্টা করেছি এবং একই ত্রুটি পেয়েছি। আমি সমস্ত সংকলক আউটপুট (বিন এবং অবজেক্ট) অপসারণ করার চেষ্টা করেছি। পরিশেষে আমি সরাসরি এসকিউএলডিএল ডেলের সাথে একটি উল্লেখ করেছি, যা সার্ভারে কাজ করার জন্য প্রকল্পের প্রয়োজন হয়নি এবং আমি এই সংকলক ত্রুটি পেয়েছি:

ত্রুটি 1 ত্রুটি হিসাবে সতর্কতা: সমাবেশ জেনারেশন - রেফারেন্সড অ্যাসেমব্লিং 'সিস্টেম.ডাটা.এসকিউএলাইট.ডিএল' একটি পৃথক প্রসেসর মাইপ্রজেক্টকে লক্ষ্য করে

কোন সমস্যা হতে পারে কি ধারনা?

আরও ত্রুটির বিবরণ:

উত্স ত্রুটি:

বর্তমান ওয়েব অনুরোধটি কার্যকর করার সময় একটি অযৌক্তিক ব্যতিক্রম উত্পন্ন হয়েছিল। ব্যতিক্রমের উত্স এবং অবস্থান সম্পর্কিত তথ্য নীচে ব্যতিক্রম স্ট্যাক ট্রেস ব্যবহার করে সনাক্ত করা যেতে পারে।

স্ট্যাক ট্রেস:

[ব্যাডিম্যাজ ফরমেট এক্সেপশন: ফাইল বা অ্যাসেমব্লির 'সিস্টেম.ডাটা.এসকিউলাইট, সংস্করণ = 1.0.61.0, সংস্কৃতি = নিরপেক্ষ, পাবলিককি টোকেন = db937bc2d44ff139' বা এর অন্যতম নির্ভরতা লোড করা যায়নি। প্রচেষ্টা] একটি ভুল বিন্যাস সঙ্গে একটি প্রোগ্রাম লোড করা হয়েছে।
System.Reflection.Assembly._nLoad (AssemblyName FILENAME, স্ট্রিং কোডবেস, প্রমাণ assemblySecurity, পরিষদের locationHint, StackCrawlMark & stackMark, বুলিয়ান throwOnFileNotFound, বুলিয়ান forIntrospection) +0
System.Reflection.Assembly .nLoad (সমাবেশ নাম ফাইল ফাইলের নাম, স্ট্রিং কোডবেস, প্রমাণ সমাবেশসিকিউরিটি, সমাবেশের অবস্থানহিন্ট, স্ট্যাকক্রলমার্ক এবং স্ট্যাকমার্ক, বুলিয়ান থ্রোলঅনফিলনটফাউন্ড, ইনট্রোস্পেকশন জন্য বুলিয়ান) +৩৪
সিস্টেম.আরফ্লেশন.অ্যাস্পলেশন.ইনটার্নলয়েড (এসেম্বলনেম এসেম্বলিফ, এভিডেন্স অ্যাসেমব্লিউসিকিউরিটি, স্ট্যাকক্রোলমার্ক এবং স্ট্যাকমার্ক, বুলিয়ান ফর ইনট্রোস্পেকশন) +127 সিস্টেম.প্রকাশন.অ্যাস্পলেশন.ইনটার্নলয়েড (স্ট্রিং অ্যাসেমব্লিং স্ট্রিং, প্রমাণ এসেমসক্রিপশন.স্ট্র্যাক্রাক্লিকেশন .আরসিড্রাক্ল্রিং। লোড (স্ট্রিং অ্যাসেমব্লিং স্ট্রিং) +২৮
সিস্টেম. ওয়েবে.সংসারিকরণ. সংকলন সেকশন। লোড অ্যাসবেশন হেল্পার (স্ট্রিং অ্যাসেমব্লিনাম, বুলিয়ান স্টার ডাইরেক্টিভ) +46

[কনফিগারেশনএরফেরসেক্সপশন: ফাইল বা অ্যাসেমব্লির 'সিস্টেম.ডাটা.এসকিউএলাইট, সংস্করণ = 1.0.61.0, সংস্কৃতি = নিরপেক্ষ, পাবলিককেটোকেন = db937bc2d44ff139' বা এর অন্যতম নির্ভরতা লোড করা যায়নি। একটি ভুল ফর্ম্যাট সহ একটি প্রোগ্রাম লোড করার চেষ্টা করা হয়েছিল]]
System.Web.Configration.CompilationSication.LoadAsorsesHelper (স্ট্রিং এসেম্বলনাম, বুলিয়ান স্টার ডাইরেক্টিভ) +613 সিস্টেম. ওয়েবে.কনফিগারেশন.কম্পিলেশনসেকশন.লয়েডএলসিগ্রেশনফ্রিনেশনডোমাইনডমোমাইনডমোমেনডমোমেনডমোমাইজেশন .কমপ্লেশনসেকশন.লোয়াডঅ্যাস্প্যাস্পলিং (এসেম্বলিআইএনএফআই) +105
সিস্টেম. ওয়েবে.কমপ্লেশন.বিল্ড
ম্যানেজার.গেটরফেরেন্সডেমসবলস (সংকলনসংশ্লিষ্টকরণকনফিগ ) +178 সিস্টেম. ওয়েবে.কম্পিলেশন.বিল্ডপোভাইজারসম্প্লেয়ারআর্টকাট্রিং-ওয়ার্টস আউটপুট 4
System.Web.Compilation.ApplicationBuildProvider.GetGlobalAsaxBuildResult (বুলিয়ান isPrecompiled App) +232
System.Web.Compilation.BuildManager.CompileGlobalAsax () +52 System.Web.Compilation.uubuild.ubuges.puration.ubuges।

[এইচটিপিএক্সেপশন (0x80004005): ফাইল বা সমাবেশ 'সিস্টেম.ডাটা.এসকিউাইট, সংস্করণ = 1.0.61.0, সংস্কৃতি = নিরপেক্ষ, পাবলিক্যকিটোকেন = db937bc2d44ff139' বা এর অন্যতম নির্ভরতা লোড করা যায়নি। প্রচেষ্টা একটি ভুল বিন্যাস সঙ্গে একটি প্রোগ্রাম লোড করা হয়েছে।]
System.Web.Compilation.BuildManager.ReportTopLevelCompilationException () +58 System.Web.Compilation.BuildManager.EnsureTopLevelFilesCompiled () +512 System.Web.Hosting.HostingEnvironment.Initialize ( অ্যাপ্লিকেশন ম্যানেজার অ্যাপ ম্যানেজার, আইপ্লিকেশনহোস্ট অ্যাপহোস্ট, আইকনফিগম্যাপপ্যাথফ্যাক্টরি কনফিগারেশন ম্যাপপ্যাথফ্যাক্টরি, হোস্টিং-এনভায়রনমেন্টপ্যারামিটার হোস্টিংপ্যারামিটার) +729

[এইচটিপিএক্সেপশন (0x80004005): ফাইল বা সমাবেশ 'সিস্টেম.ডাটা.এসকিউাইট, সংস্করণ = 1.0.61.0, সংস্কৃতি = নিরপেক্ষ, পাবলিক্যকিটোকেন = db937bc2d44ff139' বা এর অন্যতম নির্ভরতা লোড করা যায়নি। প্রচেষ্টা একটি ভুল বিন্যাস সঙ্গে একটি প্রোগ্রাম লোড করা হয়েছে।]
System.Web.HttpRuntime.FirstRequestInit (HttpContext প্রসঙ্গ) +8896783
System.Web.HttpRuntime.EnsureFirstRequestInit (HttpContext প্রসঙ্গ) +85
System.Web.HttpRuntime.ProcessRequestInternal (HttpWorkerRequest WR ) +259


স্ট্যাক ট্রেসের এই শীটের চেয়ে ফিউশন (অ্যাসেমব্লিং বাইন্ডিং) লগ এ জাতীয় ক্ষেত্রে অনেক বেশি কার্যকর।
আন্তন টিখি

1
দেখে মনে হচ্ছে সমস্যাটি ছিল ক্যাসিনি x86।
pupeno

আমার একই সমস্যা ছিল এবং আমাদের মিশ্র উত্পাদন / বিকাশের পরিবেশের কারণে ELMAH ত্যাগ করতে হয়েছিল। উচ্চ ট্র্যাফিক প্রোডাকশন ওয়েব সার্ভারে এসকিউএলাইট ব্যবহার করা খুব ভাল লাগছে না এবং এই সত্য যে এসকিউএলইটি ডিলইএলএমএইচ-তে একমাত্র সমাবেশ যা এটি x86 এবং 64x বিটের জন্য দুটি ভিন্ন সংস্করণ রাখতে বাধ্য করে, আমি ভাবছি কেন এলএমএএইচ ছেলেরা টানছে? এটি এখন এটির পরিবর্তে এটি alচ্ছিক করে তুলুন।
খাশ

উত্তর:


122

System.Data.SQLite.dllএটি একটি মিশ্র সমাবেশ, অর্থাত্ এতে পরিচালিত কোড এবং নেটিভ কোড উভয়ই থাকে। অতএব একটি নির্দিষ্ট System.Data.SQLite.dllহয় হয় x86 বা x64, তবে উভয়ই নয়।

আপডেট ( সৌজন্যে জে পাবলো ফার্নান্দেজের ): কাসিনিজের, গঠন ওয়েব ভিসুয়াল স্টুডিও দ্বারা ব্যবহৃত যখন আপনি F5 চাপুন টিপুন অথবা ক্লিক সবুজ «খেলা» বোতাম সার্ভার, এক্স 86 শুধুমাত্র যার মানে এমনকি যদি আপনার ওয়ার্কস্টেশন x64 হয়, তাহলে আপনি শুধুমাত্র থাকব System.Data.SQLite.dll এর x86 সংস্করণ ব্যবহার করতে সক্ষম।

বিকল্পটি ক্যাসিনি ব্যবহার নয় বরং আইআইএস 7 যা সঠিকভাবে x64।


3
আমি x64 কম্পিউটারে x64 সংস্করণটি ব্যবহার করছি।
pupeno

আপনি x86 সংস্করণ ব্যবহার করার চেষ্টা করেছেন?
আন্তন টিখি

2
একটি নতুন বিকল্প যা খুব শীঘ্রই উপলভ্য হয়ে যায় তা হ'ল আইআইএস এক্সপ্রেস যা আপনাকে যে ধরনের অ্যাপ্লিকেশন পুল ব্যবহার করতে চান তা সেট করতে দেয়
রাউল ভেজার

@ রাউল ভেজার: আইআইএস এক্সপ্রেসের অ্যাপ্লিকেশন পুল নির্বাচন বৈশিষ্ট্যটি কীভাবে 32-বিট / 64-বিট বিধানসভা বিষয়টির সমাধান করে তা দয়া করে বিশদটি জানান। ধন্যবাদ
টিম

@ টিম, এই বৈশিষ্ট্যটি আপনাকে 32 বা 64 বিট ব্যবহার করতে চান এমন প্রকারের অ্যাপ্লিকেশন পুল বাছাই করতে সহায়তা করে যাতে আপনি সেই দিকটি নিয়ন্ত্রণ করতে পারেন যা ক্যাসিনিতে স্থির করা হয়েছিল এবং একই বিট লাইব্রেরির সাথে কাজ করতে পারেন। অন্য কথায়, আপনি যদি এসকিউএল ডিলের 32 বিট সংস্করণ ব্যবহার করছেন তবে আপনার আইআইএস এক্সপ্রেসে 32 বিট অ্যাপ্লিকেশন পুল নির্বাচন করা উচিত। লাইব্রেরির bit৪ বিটের সংস্করণের জন্য আপনার bit৪ বিট অ্যাপ্লিকেশন পুলটি নির্বাচন করা উচিত।
রাউল ভেজার

77

অ্যাপ পুলের জন্য "32 সক্ষম করুন - বিট অ্যাপ্লিকেশনগুলি" মিথ্যাতে সেট করা আছে তা নিশ্চিত করুন।


2
আপনি যদি 64 বিট মেশিনে x86 dll ব্যবহার করতে চান তবে এটি কাজ করে। আমাদের ক্ষেত্রে, আমাদের দেব এবং উত্পাদন পরিবেশের সাথে মেলে না তাই এটিই সবচেয়ে ভাল কাজ করেছিল।
রব

17
আমার কাছে এটি সত্যে স্থাপন করা আসলে সমস্যাটি সমাধান করেছে। আমি অনুমান করি এলফল জাহাজ ডিফল্টরূপে 32 বিট স্কয়ার লাইট সমাবেশ সহ।

1
@ জিরাপং এবং সের্গেই দু'জনের জন্যই +1 কারণ জিনিসগুলি কাজ করতে আমাকে এই কৌশলটি তৈরি করতে হয়েছিল। আমার ক্ষেত্রে আমি মনে করি আমার কাছে স্ক্লাইটলাইট ডিএলএল এর x86 সংস্করণ ছিল এবং 32 "বিট অ্যাপ্লিকেশনগুলি সক্ষম করতে হবে" সত্য "এ সেট করতে।
t3rse

43

যান IIS7 Application Pool -> advanced settings and set the 32-bit application to true


আমি উইন্ডোজ 7 চালাচ্ছি, এবং আমি এই সমস্যাটি হিট করেছি; 32-বিট চালু করা আমার জন্য এটি ঠিক করা হয়েছে, সম্ভবতঃ কারণ আমার ডিএলএল-এর অনুলিপি 32-বিট ছিল।
ডগ

1
এফওয়াইআই: এই কাজটি পাওয়ার জন্য অ্যাপ্লিকেশন পুলের পরিচয় লোকালসিস্টেমটিতে সেট করা দরকার ছিল: ^
ইলুমিনাতি

আর তা নিশ্চিত করতে SQLite.Interop.dll একটি Win32 সংস্করণ আছে stackoverflow.com/questions/4816529/...
Morten Holmgaard

14

আপনি এসকিউএলাইট ব্যবহার না করে থাকলে এটি খুব সহজ:

আপনি আপনার সলিউশনের বিন ফোল্ডারগুলি থেকে SQLite DLLs মুছতে পারেন, তারপরে আপনি যে ফোল্ডারটি ELMAH উল্লেখ করেছেন সেখান থেকে। পুনর্নির্মাণ করুন এবং আপনার অ্যাপ্লিকেশনটি আপনি ব্যবহার করছেন না এমন এই ডিএলএল লোড করার চেষ্টা করবে না।


5
+1 আপনি যদি এসকিউএলাইট ব্যবহার না করে থাকেন তবে কেন রেফারেন্সড ডিএলএল ঠিক করা বিরক্ত করবেন? সুন্দর, মার্জিত এবং ঠিক আমার যা প্রয়োজন।
ভাবিনব

এটি স্থানীয়ভাবে কাজ করেছে তবে আমি আজুরে মোতায়েন করার পরে ত্রুটি পেয়েছি।
স্টুয়ার্টডনেট

8

আমার কাছে একটি 64 বিট ডেভ মেশিন এবং 32 বিট বিল্ড সার্ভার রয়েছে। আমি এই কোডটি এনএইচবারনেট সূচনা করার আগে ব্যবহার করেছি। যে কোনও আর্কিটেকচারে আকর্ষণীয় কাজ করে (ভাল আমি 2 টি পরীক্ষা করেছি)

আশা করি এটি কাউকে সাহায্য করবে।

গাইডো

        private static void LoadSQLLiteAssembly()
        {
            Uri dir = new Uri(Assembly.GetExecutingAssembly().CodeBase);
            FileInfo fi = new FileInfo(dir.AbsolutePath);           
            string binFile = fi.Directory.FullName + "\\System.Data.SQLite.DLL";
            if (!File.Exists(binFile)) File.Copy(GetAppropriateSQLLiteAssembly(), binFile, false);
        }

        private static string GetAppropriateSQLLiteAssembly()
        {
            string pa = Environment.GetEnvironmentVariable("PROCESSOR_ARCHITECTURE");
            string arch = ((String.IsNullOrEmpty(pa) || String.Compare(pa, 0, "x86", 0, 3, true) == 0) ? "32" : "64");
            return GetLibsDir() + "\\NUnit\\System.Data.SQLite.x" + arch + ".DLL";
        }

কেউ কি সফলভাবে এই কৌশলটি ব্যবহার করেছেন? আমি এটি একটি পরীক্ষার জন্য চেষ্টা করেছি asp.net এমভিসি অ্যাপ্লিকেশন সমাধান এবং এটি আমার পক্ষে কার্যকর হয়নি।
গ্লেন

1
এনভায়রনমেন্ট ভেরিয়েবলের পরিবর্তে, আপনি সরাসরি সিএলআর ব্যবহার করতে পারেন: স্ট্রিং আর্চ = IntPtr.Size == 8? "x64": "x86";
জেসন মোর্স

2
অথবা এনভায়রনমেন্ট.আইএস B৪ বিটপ্রসেস সম্পত্তি (যেহেতু .NET4)।
রিজেবোস্চ

5

আমাদের ক্ষেত্রে কাজ হয়নি কারণ আমাদের প্রোডাকশন সার্ভারটি অনুপস্থিত

মাইক্রোসফ্ট ভিজ্যুয়াল সি ++ 2010 এসপি 1 পুনরায় বিতরণযোগ্য প্যাকেজ (x86)

আমরা এটি ইনস্টল করেছি এবং সমস্ত কাজ ঠিক আছে। অ্যাপ্লিকেশন পুলটিতে 32-বিট অ্যাপ্লিকেশন সক্ষম হওয়া আবশ্যক এবং এটি অবশ্যই লাইব্রেরির x86 সংস্করণ


1
আমার জন্য কাজ কর. এটি কেবল সি লাইব্রেরিটি অনুপস্থিত উল্লেখ না করেই একটি ত্রুটি বার্তা দেয় যা ভয়াবহ।
brk

1
আমার জন্য আমি System.Data.SQLite, সংস্করণ = 1.0.99.0, সংস্কৃতি = নিরপেক্ষ, PublicKeyToken = db937bc2d44ff139
themadmax

5

রোডকিল উইকিতে ঠিক একই সমস্যার সাথে কারও কারও কারও কারও সাথে সমস্যা হবার কারণ, আপনার যা করা উচিত তা হ'ল:

  • আপনি x64 বা x86 ব্যবহার করছেন? স্ক্লাইটটি পৃথক আর্কিটেকচারের জন্য ডিএলএল নিয়ে আসে - ডানদিকে আপনার বিন ফোল্ডারে অনুলিপি করুন, অফিসিয়াল সরবরাহকারীর জন্য দুটি ডিএলএলএস রয়েছে:System.Data.SQLite.dll System.Data.SQLite.Linq.dll
  • যদি আপনাকে এই সমাবেশগুলির আশপাশে শিকার করতে বিরক্ত করা না যায় তবে আপনার অ্যাপ পুলের জন্য 32 বিট মোড সক্ষম করুন (কেবলমাত্র দেব মেশিনগুলির জন্য একটি সমাধান)
  • আপনি যদি কোনও সার্ভারে হোস্টিং করছেন তবে আপনার মাইক্রোসফ্ট সি ++ রানটাইম পুনরায় বিতরণযোগ্য প্রয়োজন - এটি সার্ভার ২০০৮ আর 2 এ ডিফল্টরূপে ইনস্টলড নয়। x64 সংস্করণ , x86 সংস্করণ

এসকিউএল। নেট বাইনারিগুলি বিতরণ করার সময় আপনাকে কতগুলি হুপ করতে হবে এটি গাধাটির মধ্যে একটি বাস্তব বেদনা, শেষদিকে রোডকিলের জন্য আমার সমাধানটি হ'ল আর্কিটেকচারের ভিত্তিতে bin / বিন ফোল্ডারে সঠিক বাইনারিগুলি অনুলিপি করা ছিল । দুর্ভাগ্যক্রমে এটি সি ++ রানটাইম সমস্যা সমাধান করে না।


5

আমি নুগেট এক্সটেনশান সহ সিস্টেম.ডাটা.এসকিউএলাইট ইনস্টল করে এটি সমাধান করেছি। এই এক্সটেনশনটি ভিজ্যুয়াল স্টুডিও 2010 বা ততোধিকের জন্য ব্যবহার করতে পারে। প্রথমত, আপনাকে নুগেট এক্সটেনশন ইনস্টল করতে হবে। আপনি এখানে অনুসরণ করতে পারেন:

  • ভিজ্যুয়াল স্টুডিও 2010, মেনু -> সরঞ্জামগুলিতে যান
  • এক্সটেনশন ম্যানেজার নির্বাচন করুন
  • অনুসন্ধান বাক্সে নিউগেট প্রবেশ করুন এবং অনলাইন গ্যালারীটি ক্লিক করুন। এটি অপেক্ষা করে তথ্য পুনরুদ্ধার করুন ...
  • পুনরুদ্ধার করা নিউগেট প্যাকেজ ম্যানেজার নির্বাচন করুন, ডাউনলোড ক্লিক করুন click এটি ডাউনলোডের অপেক্ষায়…
  • ভিজ্যুয়াল স্টুডিও এক্সটেনশন ইনস্টলার নিউগেট প্যাকেজ ম্যানেজারে ইনস্টল ক্লিক করুন। ইনস্টলেশন শেষ হওয়ার জন্য অপেক্ষা করুন।
  • বন্ধ ক্লিক করুন এবং 'এখন পুনরায় আরম্ভ করুন।

দ্বিতীয়ত, এখন আপনি এসকিউএলাইট ইনস্টল করতে পারেন:

এবং এখন, আপনি System.Data.SQLite ব্যবহার করতে পারেন।

ক্ষেত্রে, আপনি দুটি ফোল্ডার x64 এবং x86 দেখতে পাবেন, এই ফোল্ডারে SQLite.Interop.dll রয়েছে contain এখন সেইসব dlls এর বৈশিষ্ট্য উইন্ডোগুলিতে যান এবং সেট বিল্ড অ্যাকশনটি কন্টেন্ট হয় এবং আউটপুট ডিরেক্টরিতে অনুলিপি হয় সর্বদা অনুলিপি।

সুতরাং, এটা আমার উপায়।

ধন্যবাদ। কিম থো ফ্যাম, হো চি মিন সিটি, ভিয়েতনাম। ইমেল: tho.phamkim@gmail.com


4

ম্যানুয়াল লোড সম্পর্কিত System.Data.SQLite সমাবেশ এটি সমাধান করতে পারে।

নীচে হিসাবে গ্যাটাপিয়ার কোড পরিবর্তন করা হয়েছে:

    public static void LoadSQLLiteAssembly()
    {
        Uri dir = new Uri(Assembly.GetExecutingAssembly().CodeBase);
        FileInfo fi = new FileInfo(dir.AbsolutePath);
        string appropriateFile = Path.Combine(fi.Directory.FullName, GetAppropriateSQLLiteAssembly());
        Assembly.LoadFrom(appropriateFile);
    }

    private static string GetAppropriateSQLLiteAssembly()
    {
        string pa = Environment.GetEnvironmentVariable("PROCESSOR_ARCHITECTURE");
        string arch = ((String.IsNullOrEmpty(pa) || String.Compare(pa, 0, "x86", 0, 3, true) == 0) ? "32" : "64");
        return "System.Data.SQLite.x" + arch + ".DLL";
    }

4

যখন আমাদের উইন্ডোজ সার্ভারটি 32 বিট ওএস থেকে 64 বিটে রূপান্তরিত হয়েছিল তখন আমি এই ত্রুটিটি পেয়েছি। যে সমাবেশটি ত্রুটিটি ছুঁড়েছিল তা x86 মোডে (অর্থাৎ 32 মোডে) সংকলন করতে সেট করা হয়েছিল। আমি এটিকে "যে কোনও সিপিইউ" তে স্যুইচ করেছি এবং এটি কৌশলটি করেছে। আপনি নিম্নলিখিতটি করে এই মানটি পরিবর্তন করতে পারেন:

প্রকল্পে ডান ক্লিক করুন Properties -> Build -> Platform Target -> change to "Any CPU"


1
আমি 32 বিট সিস্টেম.ডাটা.এসকিউএলাইট.ডিএল ব্যবহার করার চেষ্টা করছিলাম এবং bit৪ বিট সিপিইউতে চলাকালীন এই ব্যতিক্রমটি পাচ্ছি। আমি প্ল্যাটফর্মের লক্ষ্যটিকে "যে কোনও সিপিইউ" থেকে "x86" এ পরিবর্তন করেছি এবং এটি ব্যতিক্রমটিকে দূরে সরিয়ে নিয়েছে। আমি মনে করি যদি আপনি কর্মক্ষমতা সর্বাধিকীকরণের দিকে না দেখেন তবে সর্বনিম্ন সাধারণ ডিনোমিনেটরের জন্য এটি তৈরি করা ভাল তবে এটি 32 বা 64 বিট সিপিইউতে চলে।
সিডিভিডিউইং

3

অদ্ভুতভাবে, আমি সমাধান করেছি, প্যাকেজ ম্যানেজার কনসোলের বিপরীতে, নুগেট জিইউআই অ্যাপ্লিকেশনটির মাধ্যমে System.Data.SQLite ইনস্টল করে resolved

এই লাইব্রেরিটি চালনার জন্য নির্ভরতাগুলি কনসোলের মাধ্যমে ইনস্টল করার সময় অন্তর্ভুক্ত হয়নি।


3

System.Data.SQLiteSystem.Data.SQLite.interopউভয় প্যাকেজ একই সংস্করণ এবং x86 উভয়ই তা নিশ্চিত করার উপর নির্ভরতা রয়েছে ।

এটি একটি পুরানো প্রশ্ন, তবে আমি উপরোক্ত সমস্ত চেষ্টা করেছি। আমি কঠোরভাবে x86 প্রকল্পে কাজ করছিলাম , সুতরাং দুটি ফোল্ডার / x86, / x64 ছিল না। তবে কোনও কারণে, System.Data.SQLiteএটির একটি আলাদা সংস্করণ ছিল System.Data.SQLite.interop, একবার আমি ম্যাচিং ডলগুলি টেনে নিলে সমস্যাটি ঠিক হয়ে গেল।


1

আমি 2 টি দ্রুত সমাধান নিয়ে এসেছি। হয় আমার জন্য কাজ। আমি মনে করি অনুমতিটি থাকার কারণে সমস্যা।

1) নেট -২.০ ডিরেক্টরি থেকে এলমাহ.ডিল ফাইলটি ব্যবহার না করে নেট-১.১ থেকে আমি এলমাহ.ডিল ব্যবহার করেছি।

2) এর পরিবর্তে প্রকল্প বিন ডিরেক্টরিতে এলমাহ.ডিল রাখুন। আমি এটি স্থাপন করার জন্য একটি dll ডিরেক্টরি তৈরি করি।



0

আপনি কি আপনার বিন ডিবাগ ফোল্ডারটি মুছে ফেলতে এবং পুনরায় সংযোগ করতে পারেন?

বা আপনার প্রকল্পের রেফারেন্সটি পরীক্ষা করে দেখুন System.Data.SQLite, এটি কোথায় অবস্থিত তা ট্র্যাক করুন, তারপরে প্রতিচ্ছবিতে dll খুলুন। যদি আপনি এটি খুলতে না পারেন, তার অর্থ এই যে ডেলটি দূষিত হয়েছে, আপনি একটি সঠিক খুঁজে পেতে বা। নেট ফ্রেমওয়ার্কটি পুনরায় ইনস্টল করতে চাইতে পারেন।


আমি সরাসরি System.Data.SQLite এ রেফারেন্স যুক্ত করার চেষ্টা করেছি (বিন এবং অবজেক্ট অপসারণের বাইরে) এবং আমি এই ত্রুটিটি পেয়েছি: ত্রুটি 1 ত্রুটি হিসাবে সতর্কতা: সমাবেশ জেনারেশন - রেফারেন্সড অ্যাসেম্বলি 'সিস্টেম.ডাটা.এসকিউএল.ডিএল 'আলাদা প্রসেসরকে লক্ষ্য করে মাইপ্রজেক্ট
পিউপেনো

0

আপনি যদি আপনার বিকাশ মেশিনে আইআইএস এক্সপ্রেসটিকে ওয়েব সার্ভার হিসাবে ব্যবহার করেন তবে আমি স্থানীয় আইআইএসে পরিবর্তন করব। এটি আমার পক্ষে কাজ করেছে।


0

এটি একটি পুরানো পোস্ট, তবে অ্যাপ্লিকেশন পুলের জন্য সত্য "32-বিট অ্যাপ্লিকেশন সক্ষম করুন" সেট করার চেষ্টা করতে কিছু লোক এই ত্রুটিটি অনুসন্ধান করে help এটাই আমার জন্য ত্রুটিটি সমাধান করেছে। @ বেকেলমডব্লু এর উত্তর সম্পর্কে কিছু মন্তব্য পড়ে আমি এই সমাধানটি নিয়ে এসেছি।


0

আপনার সম্ভবত ভুল প্যাকেজ ইনস্টল করা আছে। আপনি মাইক্রোসফ্ট দ্বারা উত্পাদিত প্যাকেজটি চান যা System.Data.Common সরবরাহকারী মডেলটি কার্যকর করে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.