DLL 'SQLite.Interop.dll' লোড করতে অক্ষম


205

পর্যায়ক্রমে আমি নিম্নলিখিত ব্যতিক্রম পাচ্ছি:

Unable to load DLL 'SQLite.Interop.dll': The specified module could not be found. (Exception from HRESULT: 0x8007007E)

আমি 1.0.82.0 ব্যবহার করছি। সংস্করণ, ভিএস2010, ওএস উইন 64৪, এ নুগেট সহ এটি ইনস্টল করুন।

একবার ব্যতিক্রম প্রদর্শিত শুরু হলে, এটি নিয়মিত উপস্থিত হয় - ডিবাগ এবং রিলিজ এবং ভিএস এর মধ্যে বা বাইরে অ্যাপ্লিকেশন চলমান in

এটি বন্ধ করার একমাত্র উপায় হ'ল লগঅফ এবং লগন। ব্যতিক্রম নিক্ষেপ করা হয় না এবং dll বোঝা হয়। এটি কয়েক দিন ধরে কাজ করতে পারে তবে এটি আবার ভেঙে যেতে পারে।

কেউ কি এরকম কিছু দেখেছেন এবং এর কোনও সমাধান আছে?


2
হ্যাঁ, এটি সর্বদা অনুলিপি করতে প্রস্তুত। আমার কাছে বিন / ডিবাগে x64 এবং x86 ফোল্ডার রয়েছে। এবং এটি বেশিরভাগ ক্ষেত্রেই কাজ করে তবে কখনও কখনও কেবল কাজ করা বন্ধ করে দেয়। সম্ভবত কোনও কিছু ডেল অ্যাক্সেসকে বাধা দিচ্ছে, আমি পরের বার এটি কাজ করা বন্ধ করার পরে এটি অনুসন্ধান করার চেষ্টা করব। যেমনটি আমি বলেছি এটি কোনও সমস্যা ছাড়াই দিনগুলি কাজ করতে পারে।
এক্সএল

13
নতুন কনসোল প্রকল্পে এসকিউএল নুগেট প্যাকেজ যুক্ত করার পরে আমি এই ত্রুটিটি ঠিক বাক্সের বাইরে পেয়েছি। X86 ফোল্ডার থেকে ম্যানুয়ালি SQLite.Interop.dll অনুলিপি করা এক স্তর পর্যন্ত অ্যাপ্লিকেশনটি চালানোর অনুমতি দেয়। আমার কাছে অদ্ভুত লাগছে যে এটি এতটা ভেঙে যাবে।
lesscode

@ ওয়েইন হ্যাঁ, এটি অবশ্যই সহায়তা করে। তবে আমার ক্ষেত্রে, আমরা প্রকল্পে একসাথে কাজ করছি, এবং আমার বন্ধু x86 ব্যবহার করছে, যখন আমি x 64 ওএস। এবং আমি লক্ষ্য করেছি, এটি কেবল কখনও কখনও কাজ করা বন্ধ করে দেয়। যদিও এটি আমার কাছে গত মাসে ঘটেনি।
xll

1
আপনি যদি এসকিউএলাইটের জন্য সঠিক বাইনারি ডাউনলোড করেন তবে আপনার প্রজেক্ট বিল্ড অপশন অনুসারে আপনার রিলিজ বা ডিবাগ ফোল্ডারে SQLite.Interop.dll অনুলিপি করুন।
এলশান

এটি এমন একটি এলোমেলো বাগ ... কখনও কখনও এটি ঘটে এবং কখনও কখনও এটি আমার প্রকল্পের জন্য হয় না। সব চেষ্টা করে দেখলাম।
বি কে

উত্তর:


140

আমি জানি আমি পার্টিতে দেরি করেছি তবে আমি আজই সর্বশেষ x86 / x64 নামানোর পরে (সংস্করণ 1.0.88.0) এ সমস্যাটি পেয়েছিলাম। ভিএস ২০১২-এ আমার স্থানীয় আইআইএস ডিফল্টরূপে 32 বিট চালায় এবং এক্স 64 এ যাওয়ার কোনও সহজ উপায় নেই। আমার প্রোডাকশন সার্ভারটি 64 বিট চালায়।

যাইহোক আমি একটি ডিএলএল প্রকল্পে নুগেট প্যাকেজ ইনস্টল করেছি এবং আমি এই ত্রুটি পেয়েছি। এটি কাজ করার জন্য আমাকে যা করতে হয়েছিল তাও আমাকে এটি মূল সাইট প্রকল্পে ইনস্টল করতে হয়েছিল । এমনকি এটি এসকিউএলাইট ক্লাসগুলি একেবারে স্পর্শ না করলেও।

আমার অনুমান যে এসকিউএলাইট ইন্টারপের কোন সংস্করণটি লোড করবে তা সনাক্ত করতে এন্ট্রি এসেম্বলি ব্যবহার করে।


11
মূল প্রকল্পে আমি নিউগেটের সাথে এসকিউএলাইট কোর উল্লেখ করার পরে এটি আমার পক্ষে কাজ করেছিল।
লুকা ক্রেমনেসি

মূল প্রকল্পে স্ক্যালাইট.কম যুক্ত করা আমার জন্য আমার ডাব্লুপিএফ সলিউশনে কাজ করেছে
দিপু রাজ

ডিবি কল একটি লাইব্রেরিতে থাকা সত্ত্বেও আমাকে ইনস্টল-প্যাকেজ স্ক্লাইটের পাশাপাশি ইনস্টল-প্যাকেজ সিস্টেম.ডাটা.এসকিউলাইট.কোর উভয়ই করতে হয়েছিল ...

এই উত্তর হওয়া উচিত।
ববি তুর্কালিনো

4
"মূল সাইট" প্রকল্প বলতে কী বোঝ? আমার ক্ষেত্রে আমি ডেস্কটপের কাজ করছি। আপনি কি "স্টার্টআপ" প্রকল্পটি বোঝাতে চান?
ইউইউডিডিএলআরলিআরএস

60

আমার এই সমস্যাটি ছিল কারণ আমি যে ডিএলএল ব্যবহার করছিলাম তার মধ্যে স্ক্লাইট ছিল নির্ভরতা হিসাবে (কেবল স্ক্লাইট কোর প্যাকেজ সহ নিউগেটে কনফিগার করা)। প্রকল্পটি 'SQLite.Interop.dll' (x86 এবং x64 ফোল্ডার উভয়) ব্যতীত সমস্ত স্ক্লাইট dll-s সংকলন এবং অনুলিপি করে।

সমাধানটি খুব সহজ ছিল: আপনি যে প্রকল্পটি তৈরি করছেন / চালাচ্ছেন তার জন্য কেবল স্ক্লাইট। কোর প্যাকেজকে নির্ভরতা হিসাবে (নুগেটের সাথে) যুক্ত করুন এবং dll-s অনুলিপি করা হবে।


আমার জন্য কাজ! ধন্যবাদ
ত্রিস্তান জাজাহেল

একমত। আমি 'স্ক্লাইট.নাট পিসিএল' প্যাকেজটি ব্যবহার করছি তবে পাওয়া গেছে আমার 'সিস্টেম.ডাটা.এসকিউএলাইট কোর (x86 / x64)' দরকার। আমাকে 'কোনও সিপিইউ' না দিয়ে 'x86' বা 'x64' এর প্ল্যাটফর্ম লক্ষ্য ব্যবহারের জন্য প্রকল্পটি (গুলি) পরিবর্তন করতে হবে।
অ্যান্ড্রু স্টিফেন্স

2
এখানে পোস্ট বেশ কয়েকটি সমাধানের চেষ্টা করা হয়েছে, এটি আসলে সবচেয়ে ভাল কাজ করেছে।
ব্যাটম্যান

2
আপনি কীভাবে এরকম নির্ভরতা যুক্ত করতে পারেন? এটি কখনও করেনি (VS2013)
jpgrassi

3
সরঞ্জামগুলিতে যান -> নিউগেট প্যাকেজ ম্যানেজার -> সমাধানের জন্য নিউগেট প্যাকেজগুলি পরিচালনা করুন ... -> অনলাইন -> সব। তারপরে স্ক্লাইটের জন্য অনুসন্ধান করুন এবং System.Data.SQLite কোর যুক্ত করুন (x86 / x64)।
মেরিন

44

ডাব্লুপিএফ প্রকল্পে যার প্ল্যাটফর্মের লক্ষ্য ছিল এসকিউএলাইট ব্যবহার করার সময় আমার একই সমস্যা হয়েছিল Any CPU। নিম্নলিখিত পদক্ষেপগুলি অনুসরণ করে আমি এটি ঠিক করেছি:

  1. ভিজ্যুয়াল স্টুডিওতে প্রকল্প ডিজাইনার খুলুন। এটি কীভাবে করবেন সে সম্পর্কে বিশদটি এখানে পাওয়া যাবে
  2. বিল্ড ট্যাবে ক্লিক করুন।
  3. prefer 32-bitবিকল্পটি অক্ষম করুন ।

বিকল্পভাবে, আপনি কেবল প্ল্যাটফর্মের লক্ষ্যটি সেট করতে পারেন x86বা x64। আমি মনে করি System.Data.SQLiteলাইব্রেরিটি 'SQLite.Interop.dll' ফাইলের অবস্থান পেতে প্ল্যাটফর্ম টার্গেট ব্যবহার করে এই সমস্যাটি সৃষ্টি করেছে ।

হালনাগাদ:

যদি প্রকল্পের ডিজাইনার পৌছানো যাবে না, শুধু প্রজেক্ট (খুলুন *.csprojএকটি টেক্সট এডিটর থেকে) ফাইল এবং মান যোগ <Prefer32Bit>false</Prefer32Bit>মধ্যে <PropertyGroup>...</PropertyGroup>ট্যাগ।

উদাহরণ কোড

<PropertyGroup>
    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
    <ProjectGuid>[Set by Visual Studio]</ProjectGuid>
    <OutputType>Exe</OutputType>
    <AppDesignerFolder>Properties</AppDesignerFolder>
    <RootNamespace>[Set by Visual Studio]</RootNamespace>
    <AssemblyName>[Set by Visual Studio]</AssemblyName>
    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
    <FileAlignment>[Set by Visual Studio]</FileAlignment>
    <!--Add the line below to your project file. Leave everything else untouched-->
    <Prefer32Bit>false</Prefer32Bit>
</PropertyGroup>

আমি ভিএস 2010 ব্যবহার করছি, এর মতো কোনও বিকল্প নেই।
xll

@ এক্সএল, আমি স্পষ্টির জন্য উত্তর সম্পাদনা করেছি। সম্পাদনা জিনিস পরিষ্কার করে কিনা তা পরীক্ষা করে দেখুন।
কালেব কিগে

10
ভিএস ২০১২ এ এই বিকল্পটি আমার জন্য ধূসর।
কুগেল

6
বিকল্পটি কেবলমাত্র EXE প্রকল্পগুলিতে সক্ষম করা হয়েছে, তবে আমি মনে করি আমাদের বেশিরভাগেরই ইউনিট পরীক্ষা প্রকল্পগুলির সাথে এই সমস্যা রয়েছে।
ব্র্যানন 14

1
ভিএস প্রো 2015-এর একটি ডাব্লুপিএফ প্রজেক্টে আমার জন্য গ্রাইয়েড হয়েছিল .csprojfile ফাইলটি falseইতিমধ্যে সেট হয়ে গেছে তবে তবুও ত্রুটি ছিল।
vapcguy

32

আমি আমার প্রকল্পে এটি ঠিক করেছি।

এটি কাজ করছিল, এবং যখন কোনও সহকর্মী তার পরিবর্তনগুলি জমা দিয়েছিলেন, আমি "ডিএলএল 'এসকিউএলাইট.ইনটারপ.ডিল'" ব্যতিক্রম পেয়েছি।

প্রকল্পের .csproj ফাইলের পার্থক্য করা, এটি নন-ওয়ার্কিং সংস্করণে ছিল:

<ItemGroup>
     <Content Include="x64\SQLite.Interop.dll" />
     <Content Include="x86\SQLite.Interop.dll" />
</ItemGroup>

এবং ওয়ার্কিং সংস্করণে এটি ছিল:

<ItemGroup>
     <Content Include="x64\SQLite.Interop.dll">
          <CopyToOutputDirectory>Always</CopyToOutputDirectory>
      </Content>
      <Content Include="x86\SQLite.Interop.dll">
          <CopyToOutputDirectory>Always</CopyToOutputDirectory>
      </Content>
</ItemGroup>

ফিরে যাওয়ার পরে, আমি ব্যতিক্রমটি পাইনি। ডিএলএল ফাইলগুলি উপযুক্ত ডিবাগ \ x64 (ইত্যাদি) ফোল্ডারে ফেলে দেওয়া হয়েছিল।


<itemgroup> "SQLite.Interop.dll" এর জন্য প্রকল্পের .csproj ফাইল নেই। তবুও আমি আপনার সমাধানটি যুক্ত করার চেষ্টা করেছি কিন্তু কার্যকর হয়নি :(
এআইসি

এটি ভিএস ২০১২ তে কাজ করবে না, উপাদানগুলির অস্তিত্ব নেই।
এইচটিএম

আপনাকে অনেক ধন্যবাদ. 2015 বনাম কাজ করে
জেভেনিজ কনোনভ

29

সুতরাং, নিউগেট যোগ করার পরে স্থাপনা ইন্টারপসটি অনুলিপি করে না। আপনি এটিকে আপনার সিএসপোজ ফাইলটিতে যুক্ত করতে পারেন এবং এটির আচরণটি ঠিক করা উচিত:

 <PropertyGroup> 
    <ContentSQLiteInteropFiles>true</ContentSQLiteInteropFiles>
    <CopySQLiteInteropFiles>false</CopySQLiteInteropFiles>
    <CleanSQLiteInteropFiles>false</CleanSQLiteInteropFiles>
    <CollectSQLiteInteropFiles>false</CollectSQLiteInteropFiles>
 </PropertyGroup>

যদি আপনি এসকিউএলাইটের নুগেটের উত্সটিতে সন্ধান করেন তবে আপনি দেখতে পাবেন যে এগুলি বিশেষত কী করছে। এটি আমাকে এএসপি.নেট কোরের সাথে কাজ করার জন্য অনুমতি দিয়েছে।


10
ContentSQLiteInteropFiles এর উত্তর। শীর্ষস্থানীয় উত্তরগুলির বেশিরভাগ অনুমানের কাজ।
কোরি অ্যালিক্স

6
হ্যাঁ, ContentSQLiteInteropFiles এর উত্তর। ১. এটি গ্রহণযোগ্য উত্তর হওয়া উচিত ২. অন্যদিকে, এটি তদন্ত করা উচিত, যে কীভাবে এই কাজটি স্বয়ংক্রিয়ভাবে করা যায় নাগ প্যাকেজ হিসাবে, বা কমপক্ষে এই কনফিগারেশনের প্রয়োজনীয়তার ডকুমেন্ট।
গ্রাইলিম

গ্রহণযোগ্য উত্তর হওয়া উচিত। সুপার সিম্পল 1. আনলোড প্রকল্প 2. সিএসপিজেজে উপরেরটি যুক্ত করুন 3. পুনরায় লোড প্রকল্প। এটি এত সহজ ...
বিলআরহল

24

আপনি যখন এই অবস্থায় পাবেন তখন পুনর্নির্মাণ-সমস্ত করার চেষ্টা করুন। এটি যদি সমস্যার সমাধান করে তবে আপনার আমারও একই সমস্যা থাকতে পারে।

কিছু পটভূমি (আমার বোঝার) :

  • এসকিউএলাইটে রয়েছে 1 টি পরিচালিত অ্যাসেমব্লিং (সিস্টেম.ডাটা.এসকিউএলাইট.ডিএল) এবং বেশ কয়েকটি প্ল্যাটফর্ম নির্দিষ্ট সমাবেশ ( নুগেটের সাথে এসকিউএলাইট ইনস্টল করার সময়, নুগেট আপনার প্রকল্পে প্ল্যাটফর্মের নির্দিষ্ট সংস্থাগুলি যুক্ত করবে (বেশ কয়েকটি ফোল্ডারের মধ্যে: \ x86, \ x64), এবং এই ডেলগুলি "সর্বদা অনুলিপি করুন" এ কনফিগার করে।

  • লোড হয়ে গেলে, পরিচালিত সমাবেশ platform x86 এবং \ x64 ফোল্ডারগুলির মধ্যে প্ল্যাটফর্ম নির্দিষ্ট সমাবেশগুলির জন্য অনুসন্ধান করবে। আপনি এখানে আরও দেখতে পারেন । ব্যতিক্রম হ'ল এই পরিচালিত সমাবেশটি এই ফোল্ডারগুলির মধ্যে (এবং ব্যর্থ হওয়া) প্রাসঙ্গিক (SQLite.Interop.dll) সন্ধান করার চেষ্টা করছে।

আমার পরিস্থিতি :

আমার সমাধানে আমার 2 টি প্রকল্প রয়েছে; একটি ডাব্লুপিএফ অ্যাপ্লিকেশন এবং একটি ক্লাস লাইব্রেরি। ডাব্লুপিএফ অ্যাপ্লিকেশনটি ক্লাস লাইব্রেরি, এবং ক্লাস লাইব্রেরি SQLite উল্লেখ করে (নিউগেটের মাধ্যমে ইনস্টল করা)।

আমার জন্য সমস্যাটি ছিল যখন আমি কেবল ডাব্লুপিএফ অ্যাপ্লিকেশনটি সংশোধন করি, ভিএস আংশিক পুনর্নির্মাণের চেষ্টা করে (বুঝতে পেরে যে নির্ভরশীল ডিএল পরিবর্তিত হয়নি)। এই প্রক্রিয়াটির কোথাও, ভিএস \ x86 এবং \ x64 ফোল্ডার (SQLite.Interop.dll উড়িয়ে দিয়ে) এর সামগ্রী পরিষ্কার করে। আমি যখন একটি সম্পূর্ণ পুনর্নির্মাণ-সব করি তখন ভিএস ফোল্ডারগুলি এবং তাদের সামগ্রীগুলি সঠিকভাবে অনুলিপি করে।

আমার সমাধান :

এটি ঠিক করার জন্য, ক্লাস লাইব্রেরি থেকে আমার ডাব্লুপিএফ প্রকল্প \ বিন ডিরেক্টরিতে force x86 এবং \ x64 ফোল্ডারগুলি অনুলিপি করার জন্য xcopy ব্যবহার করে একটি পোস্ট-বিল্ড প্রক্রিয়াটি শেষ করেছি।

বিকল্পভাবে, আপনি বিল্ড কনফিগারেশন / আউটপুট ডিরেক্টরিগুলির সাথে ফ্যানসিয়ার জিনিসগুলি করতে পারেন।


1
আমি যে বার্তাটি পেয়েছি তা আমাকে জানিয়েছিল যে এই ফাইলগুলি অনুপস্থিত ছিল তবে আমি ভেবেছিলাম এটি কোনও অনুমতি সংক্রান্ত সমস্যা। একবার আমি আপনার বার্তাটি দেখেছি আমি বুঝতে পেরেছি যে আমি যখন মোতায়েন করেছি তখন তারা আসলে এটি কখনই সার্ভারে তৈরি করেনি।
স্ট্রাডাস

1
আমার কাছাকাছি অভিন্ন সমাধানটি ছিল আমার প্রারম্ভিক প্রকল্পে x86 এবং x64 ফোল্ডার যুক্ত করা, তারপরে তাদের নিজ নিজ ফোল্ডারের মধ্যে x86 ইন্টারপ এবং x64 ইন্টারপ ফাইল যুক্ত করা। আমি ফাইলগুলির বিকল্পটিকে "সামগ্রী" এবং "সর্বদা বিল্ড" এ সেট করেছি। আমি অন্য পিসির ক্লিকঅনস সহ অ্যাপ্লিকেশনটি নিযুক্ত করার সময় আমার উইন্ডোজ ফর্ম অ্যাপ্লিকেশনটি এম্বেড করা এস 3 ডিবি ডাটাবেস ফাইলের সাথে সংযোগ পেতে পেলাম। হতাশাজনকভাবে, আমার পিসিতে অ্যাপটি বিকাশ ও পরীক্ষার সময় আমার কোনও এসকিউএলাইট ত্রুটি ছিল না।
ডেভিড অ্যালান কনডিট

এখনও ভিএস 2017 এর সাথে চলছে: '(
wmebane

1
এটি আমার উত্তরটি আমার সমস্যা বুঝতে সাহায্য করে, যদিও আমার ফিক্সটি কিছুটা আলাদা। আমার সমস্যাটি হ'ল আমি নিজে নিজে system.data.Sqlite.dll যুক্ত করেছি। এই উপায়ে স্ক্লাইট.আইনটার্প.ডিল স্বয়ংক্রিয়ভাবে \ x86 এবং x64 এ অনুলিপি করা হয় না। সমাধানটি হ'ল রেফারেন্সটি মুছুন এবং এটি নুগেট দ্বারা যুক্ত করুন।
সুসান ওয়াং

19

আমার ভিজ্যুয়াল স্টুডিও এক্সপ্রেস 2013 চলমান একই সমস্যা ছিল I আমি এখানে এবং অন্য কোথাও উল্লিখিত বেশ কয়েকটি সমাধানের চেষ্টা করেছি no আমি আশা করি এই সংশোধনটি অন্যদের সহায়তা করে।

SQLite- ভিত্তিক পরিষেবাটি পরীক্ষা করে এমনটি আমার পরীক্ষার শ্রেণীর DeploymentItemবৈশিষ্ট্যটি ব্যবহার করে আমি এটি ঠিক করেছি ।

উদাহরণ:

[TestClass]
[DeploymentItem(@"x86\SQLite.Interop.dll", "x86")] // this is the key
public class LocalStoreServiceTests
{

    [TestMethod]
    public void SomeTestThatWasFailing_DueToThisVeryIssue()
    {
         // ... test code here
    }
}

এটি উপযুক্ত "টেস্টআরসাল্টস" ফোল্ডারের মধ্যে ডিরেক্টরিতে SQLite.Interop.dllঅনুলিপি করার প্রয়োজনের কারণ ঘটায় x86

সবুজ সবুজ। সব ভাল.


1
এই সমাধান কেবলমাত্র তখনই কাজ আপনি Microsoft.VisualStudio.TestTools.UnitTesting নামস্থান ব্যবহার করছেন
sapbucket

4
আপনি এমএসটিস্ট ব্যবহার করছেন তবে এটি একটি সঠিক সমাধান। এসকিউএলাইট ঠিকঠাক কাজ করেছিল, এসকিউএলাইট.ইন্টারওয়্যার.ডিএল কোনও সমস্যা ছাড়াই সন্ধান করে, যতক্ষণ না আমি পরীক্ষার জন্য ডিপ্লোনিআইটেম ("some.csv") ব্যবহার করি। এইভাবে .csv ফাইলটি অন্তর্ভুক্ত করে এমএসটিস্টে সমস্ত রেফারেন্সড ডলগুলি অনুলিপি টেস্টরাল্টস ডিরেক্টরিতে কপির জন্য চালিত করে। যেহেতু SQLite.Interop.dll প্রকল্পে রেফারেন্স করা হয়নি (এবং এটি পরিচালনা করা কোড হওয়ায় এটি হতে পারে না), এটি কখনই অনুলিপি করা হয়নি।
জোহান

আপনার সেরা বাজি হল দুটি লাইন যুক্ত করা, প্রতিটি আর্কিটেকচারের জন্য একটি। পরীক্ষার রানার 64৪-বিট চলমান ঘটনা ইভেন্টে এটি আপনাকে রক্ষা করে।
কર્ક ওল

13

Tools -> Extension and updatesএসকিউএলাইট থেকে নিউগেট আপডেট করা এবং পুনরায় ইনস্টল করা। কমান্ডটি সহ কোর PM> Update-Package -reinstall System.Data.SQLite.Coreএটি আমার জন্য স্থির করে।


এটি করার সময় যদি আপনি একটি ত্রুটি পান তবে আমার এসকিউএলাইট ডিএলএল / রেফারেন্সগুলি সরিয়ে এবং নুগেট থেকে সম্পূর্ণ পুনরায় ইনস্টল করা আমার জন্য কৌশলটি করেছে
কায়াকিনকডার

স্ক্যালাইট কোরকে আমার কাছে পুনরায় ইনস্টল করুন। VS2012 এ ঘটেছে। ভিএসে ওয়েব ডিফল্ট প্যাকেজে x62 সংস্করণ অন্তর্ভুক্ত করা হয়নি
আন্দ্রে আর

ভিএস2015 পেশাদারেও আমার জন্য স্থির।
রাহুল কিশোর

9

একাধিক প্রকল্পের সমাধানে আমার একই সমস্যা ছিল। SQLite.Interop.dll ক্লিকঅনস ব্যবহার করে সফ্টওয়্যার দিয়ে বিতরণ করা প্লাগইনের একটির জন্য প্রয়োজনীয় ছিল।

যতক্ষণ না ভিজ্যুয়াল স্টুডিওতে ডিবাগিং সব কিছু ঠিকঠাক কাজ করেছে তবে মোতায়েন করা সংস্করণে x86 / এবং x64 / ফোল্ডারগুলি অনুপস্থিত ছিল যা এতে ডিএলএল রয়েছে।

ক্লিকঅনস ব্যবহার করে মোতায়েনের পরে এটি কার্যকর করার সমাধানটি ছিল এই দুটি সাবফোল্ডার সমাধানের স্টার্টআপ প্রজেক্টে তৈরি করা (এটিও প্রকাশিত হচ্ছে) তাদের ডিএলএলগুলিতে অনুলিপি করুন এবং তাদের সর্বদা সামগ্রী অনুলিপি হিসাবে সেট করুন।

এইভাবে ক্লিকঅনুস প্রকাশনা সরঞ্জাম স্বয়ংক্রিয়ভাবে ম্যানিফেস্টে এই ফাইল এবং ফোল্ডারগুলি অন্তর্ভুক্ত করে এবং তাদের সাথে সফ্টওয়্যারটি মোতায়েন করে


1
এটিই ছিল আমার একমাত্র সমাধান ... এবং ছেলে .. যখন আপনার অ্যাপ্লিকেশন কেবল কোনও ব্যবহারকারীর পিসি বন্ধ করে দেয় তখন ডিবাগ করার কি ব্যথা হয়েছিল?
সোচ্চার

8

এখানে সত্যিই প্রচুর উত্তর রয়েছে, তবে আমার নো-জিএসি-প্লেইন-চার্জ সহ সহজ এবং স্পষ্ট ।

সমস্যাটি ছিল, এক্সিকিউটেবল SQLite.Interop.dllফাইলটির জন্য আমাদের ডাটাবেস অ্যাক্সেস করতে ডান (x86 বা x64) এর একটি অনুলিপি প্রয়োজন ।

বেশিরভাগ আর্কিটেকচারের স্তর থাকে এবং আমার ক্ষেত্রে ডেটা লেয়ারের এসকিউএল সংযোগের জন্য প্রয়োজনীয় ডিএলএল থাকে।

সুতরাং আমি আমার ডেটা লেয়ার সলিউশনে একটি পোস্ট বিল্ড স্ক্রিপ্ট রেখেছি এবং সবকিছু ঠিকঠাক কাজ করেছে।


টি এল; ডিআর;

  1. আপনার সমাধানের সমস্ত প্রকল্পগুলিতে x86বা x64বিল্ড বিকল্পগুলিতে সেট করুন।

  2. Post-Build-Scriptপ্রকল্পের সাথে নিম্নলিখিতটি যুক্ত করুন SQLite nuget Package:

    xcopy "$(TargetDir)x64" "$(SolutionDir)bin\Debug\" /y

অবশ্যই আপনাকে স্ক্রিপ্ট পরিবর্তন করতে হবে Release Buildএবং x86তৈরি করতে হবে।


STL; ডিআর;

আপনার ফাইলের SQLite.Interop.dllপাশে রাখুন *.exe


6

নুগেটের এসকিউএলাইটের মাল্টি-আর্কিটেকচারের (x86, x64) সংস্করণটির ডিফল্ট ইনস্টলেশনটি আপনার বর্ণিত আচরণটি প্রদর্শন করে। আপনি যদি প্রকৃত আর্কিটেকচারের জন্য সঠিক সংস্করণটি লোড করতে চান যে .NET রানটাইম আপনার মেশিনে আপনার অ্যাপ্লিকেশনটি চালানোর জন্য বেছে নিয়েছে, তবে আপনি ডিএলএল লোডারকে সঠিক লাইব্রেরিটি কোথায় পাবেন তা সম্পর্কে ইঙ্গিত দিতে পারেন:

কার্নেল 32.dll ফাংশন কলটির জন্য আপনার প্রোগ্রামের আগে সেটডিএলএলডাইরেক্টরিতে কল করুন ainমেন ():

    [System.Runtime.InteropServices.DllImport("kernel32.dll", CharSet = System.Runtime.InteropServices.CharSet.Unicode, SetLastError = true)]
    [return: System.Runtime.InteropServices.MarshalAs(System.Runtime.InteropServices.UnmanagedType.Bool)]
    static extern bool SetDllDirectory(string lpPathName);

তারপরে 'এসকিউএল.ইনটার্প.ডিল' এর আর্কিটেকচার নির্দিষ্ট সংস্করণটি খুঁজে পেতে সঠিক উপ-ডিরেক্টরি নির্ধারণের জন্য আপনার নিজস্ব পদ্ধতিটি ব্যবহার করুন। আমি নিম্নলিখিত কোড ব্যবহার করি:

    [STAThread]
    static void Main()
    {
        int wsize = IntPtr.Size;
        string libdir = (wsize == 4)?"x86":"x64";
        string appPath = System.IO.Path.GetDirectoryName(Application.ExecutablePath);
        SetDllDirectory(System.IO.Path.Combine(appPath, libdir));

4

এটি পুরানো পোস্ট হলেও, আমি যে সমাধানটি এখানে পেয়েছি তা ভাগ করে নিতে চাই: http://system.data.sqlite.org/index.html/info/54e52d4c6f

আপনি যদি সমস্ত সমস্যাটি পড়তে না চান তবে সমাধানটি হ'ল এসএসকিউএল.ইনটারপ.ডিল হিসাবে একই পথে "এমএসভিসিআর 100.dll" ফাইলটি (যা উইন্ডোজ \ System32 ডিরেক্টরিতে পাওয়া যেতে পারে) অনুলিপি করা উচিত।

আমি কেন সমস্যাটি বোঝার জন্য সমস্যাটি পড়তে পরামর্শ দেব এবং ফাইলটি আপনার সেটআপে অন্তর্ভুক্ত করার জন্য তবে ত্রুটি দেখা দিলে কেবল ইনস্টল করার জন্য, আমি সেটআপ বিকল্পগুলিতে এটি একটি বিকল্প উপাদান বেছে নিতে সক্ষম করে তুলেছি।

এইচটিএইচ, ফর্মেন্টজ


এর জন্য অনেক ধন্যবাদ, আমি অন্য সব কিছু চেষ্টা করেছিলাম এবং এটিই সমাধান ছিল
ডেভিড বেনকো

4

এসকিউএল উইকি যেমন বলেছে, আপনার অ্যাপ্লিকেশন মোতায়েন অবশ্যই হবে:

আবেদন স্থাপনা

সুতরাং আপনার নিয়মগুলি অনুসরণ করা দরকার। আপনার লক্ষ্য প্ল্যাটফর্মের সাথে মেলে এবং এটি স্থানে রাখুন এমন চিত্রের মধ্যে বর্ণনা করুন ll আপনার সমাধান / প্যাকেজ / সিস্টেম.ডেটা.এসকিউএলাইট.কোরে ডিএলগুলি পাওয়া যাবে% সংস্করণ% /।

অ্যাপ্লিকেশন স্থাপনার সাথে আমার সমস্যা ছিল, তাই আমি ঠিক আমার প্রজেক্টে ডান এসকিউএল.ইনটারপ.ডিল যুক্ত করেছি, সেটআপ প্রকল্পে অ্যাপপ্লিকেশনফোল্ডারে যুক্ত x86 ফোল্ডার যুক্ত করেছি এবং ডেলিতে ফাইলের রেফারেন্স যুক্ত করেছি।


3

আপনি যদি একটি 64 বিট প্রকল্পে 32 বিট ডেল চালানোর চেষ্টা করছেন তবে আপনি এই ত্রুটিটি পেতেও পারেন।

আমি যখন x86 এবং x64 ফোল্ডারে একই ফাইলটি (SQLite.Interop.dll 32 বিট সংস্করণে) রেখেছি তখন এটি পেয়েছিলাম।



3

এখনও কেন এটি অন্তর্ভুক্ত করা হয়নি তা আমি জানি না, তবে আমাকে গবেষণাটি করতে হবে এবং নিজের জন্য এটি খুঁজে বের করতে হয়েছিল, সুতরাং আশা করি কেউ এই উত্তরটি খুঁজে পেয়ে ঝামেলা থেকে বাঁচবেন। এটি একটি ডাব্লুপিএফ অ্যাপ্লিকেশানের জন্য ছিল। এটি আমার ডেভ বাক্সে দুর্দান্ত কাজ করেছে, তবে আমি যেখানে এটি অনুলিপি করছি সেখানে কম্পিউটারে কাজ হয়নি এবং Unable to load DLL 'SQLite.Interop.dll'ত্রুটিটি পেয়েছে । আমি এটি সম্পর্কিত সমস্ত ডিরেক্টরি এবং ফাইলগুলিতে পোর্ট করেছি, আমার "ডিবাগ" ফোল্ডার থেকে সরাসরি এই অন্যান্য কম্পিউটারে যখন আমি যখন এটি চালিত তখন ওপি হিসাবে একই ত্রুটি পেয়েছিলাম। আমার "বিন" ফোল্ডারটিতে আমার ডিএলএল উপস্থিত ছিল "ডিবাগ-বিন" এ অনুলিপি করা হয়েছিল এবং সমস্ত অ্যাপ্লিকেশন ফাইল সহ আমি অন্তর্ভুক্ত ছিল যখন এই পাথটি ব্যবহার করে অন্য কম্পিউটারে আমার অনুলিপি করা হয়েছিল, সুতরাং এটি কোনও ফাইল অনুপস্থিত ছিল না।

আমি যে জিনিসগুলি দেখেছি সেগুলি অন্য উত্তরে বলেছিল যা প্রযোজ্য নয়:

  • আমি নিউগেট প্যাকেজটি ব্যবহার করি নি বা x86 বা x64 ফোল্ডার তৈরি করার দরকার নেই যা দেখে মনে হয় যে নুগেট প্যাকেজটি তৈরি করেছে। আমার DLLs (System.Data.SQLite এবং SQLite.Interop.dll, System.Data.SQLite.config সহ) আমার প্রকল্পের "বিন" ফোল্ডারে রয়েছে এবং ম্যানুয়ালি অনুলিপি করা হয়েছিল (সলিউশন এক্সপ্লোরার-এ "বিন" ফোল্ডার তৈরি করুন) ভিএস, উইন্ডোজ এক্সপ্লোরার এই ফোল্ডারে ডিএলএল পেস্ট করুন, ভিএস ফোল্ডার / প্রকল্পে ফাইল আনতে অ্যাড> বিদ্যমান আইটেমটি ব্যবহার করুন)। তারপরে আমি সেই প্রকল্পটি ব্যবহার করে তাদের প্রকল্পে রেফারেন্সড অ্যাসেমব্লিসি হিসাবে উল্লেখ করি ("রেফারেন্সগুলি"> "রেফারেন্স যুক্ত করুন", এবং একটিতে ব্রাউজ করুন, ধুয়ে ফেলুন, বাকীগুলির জন্য পুনরাবৃত্তি করুন)। এটি নিশ্চিত করে যে আমার প্রকল্পটি জানে যে তারা কোথায়।
  • আমার অ্যাপ্লিকেশনটিতে কোনও এসকিউএলাইট ডিএলএল ফাইলের রেফারেন্স দেওয়ার বা আমার মাইপ্রজেক্ট। স্প্রোজ ফাইলটিকে স্পর্শ করার দরকার নেই।
  • আমি এমনকি একটি নির্দিষ্ট প্রসেসর নির্দিষ্ট করার প্রয়োজন হয়নি! আমার প্রকল্পটির বিল্ডটি "যে কোনও সিপিইউ" এর জন্য, যদিও আমি কেবলমাত্র মিশ্র বা 64৪-বিট ডিএলএল করেছি এবং কেবলমাত্র উইন্ডোজ on+, যা 64৪-বিট ওএসএস, চলবে। (কোনও এক্স 86-কেবল / 32-বিট একমাত্র ডিএলএল নয়)
  • আমি যখন ওপি'র ত্রুটিটি অনুভব করেছি তখন আমি এই ডিএলএলগুলির জন্য তাদের "সামগ্রী" এবং "নতুন যদি অনুলিপি" হিসাবে ইতিমধ্যে নির্দিষ্ট করেছিলাম।

আমি যা পেয়েছি তা হ'ল https://system.data.sqlite.org/index.html/doc/trunk/www/faq.wiki#q20 থেকে :

(১১) আমার অ্যাপ্লিকেশনটি চালানোর চেষ্টা করার সময় আমি কেন একটি ডিএলএনটফাউন্ডএক্সেপশন পেতে পারি ("sqlite3.dll" বা "SQLite.Interop.dll" এর জন্য)?

হয় নামযুক্ত গতিশীল লিঙ্ক লাইব্রেরি (ডিএলএল) সনাক্ত করা যায় না বা অনুপস্থিতির কারণে এটি লোড করা যায় না। নিশ্চিত হয়ে নিন যে নামকৃত গতিশীল লিঙ্ক লাইব্রেরিটি অ্যাপ্লিকেশন ডিরেক্টরিতে বা সিস্টেম PATH বরাবর একটি ডিরেক্টরিতে রয়েছে এবং আবার চেষ্টা করুন। এছাড়াও, নিশ্চিত হন যে প্রয়োজনীয় ভিজ্যুয়াল সি ++ রানটাইম পুনরায় বিতরণযোগ্য ইনস্টল করা হয়েছে যদি না আপনি এটির সাথে স্ট্যাটিকভাবে লিঙ্কযুক্ত একটি গতিশীল লিঙ্ক লাইব্রেরি ব্যবহার না করেন।

অনুচ্ছেদের অভ্যন্তরে সেই সাহসী অংশটির উপর জোর দিন। লক্ষ্যযুক্ত কম্পিউটারটি তাজা ছিল এবং NET 4.0 ব্যতীত কোনও প্রোগ্রাম লোড করা হয়নি। একবার আমি সি ++ ইনস্টল করলে এটি এসকিউএলাইটের কাছে আদেশগুলি সম্পূর্ণ করতে সক্ষম হয়েছিল। এটি প্রথম জিজ্ঞাসিত প্রশ্নাগুলির একটি এবং প্রাক-প্রয়োজনীয়তার অংশ হওয়া উচিত ছিল, তবে এটি # 11 এ সমাধিস্থ করা হয়েছিল। আমার ডেভলপমেন্ট কম্পিউটারটি ইতিমধ্যে এটি লোড হয়ে গেছে কারণ এটি ভিজ্যুয়াল স্টুডিও নিয়ে এসেছে, তাই এটি সেখানে কাজ করেছে।

ডাউনলোড:
ভিজ্যুয়াল সি ++ ভিজ্যুয়াল স্টুডিও 2015 এর জন্য পুনরায় বিতরণযোগ্য:
https://www.microsoft.com/en-us/download/details.aspx?id=48145

আপডেট 3 (संचयी আপডেট):
https://www.microsoft.com/en-us/download/details.aspx?id=53587


3

আমি কাস্টুরা.ফডি ব্যবহার শুরু করেছি প্যাকেজ করতে (। নেট) অ্যাসেম্বলিগুলি এবং এমবেড এবং প্রিললোড নেটিভ ডলগুলি। আপনি পরে একটি ফাইল প্রেরণ করতে পারবেন বলে বিতরণে এটি পরে সহায়তা করে।

  1. নুগেট থেকে কস্টুরা ফডি ইনস্টল করুন।

  2. আপনার সি # প্রকল্পে Costrua32 নামে একটি ফোল্ডার তৈরি করুন। সেখানে কোনও সিটি লোড করার জন্য আপনাকে কোনও নেটিভ ঘড় যুক্ত করুন।

  3. একবার আপনি এই ফোল্ডারে এগুলি যুক্ত করুন। বৈশিষ্ট্য উইন্ডোতে ক্লিক করুন এবং "এম্বেডেড রিসোর্স" এ বিল্ড ক্রিয়াটি পরিবর্তন করুন

  4. অবশেষে আপনাকে নিম্নরূপে FodyWeavers.xML নামক XML ফাইলটি সংশোধন করতে হবে। এখানে আমি প্রথমে স্কেল ডিএল লোড উল্লেখ করছি। (আপনি .dll ড্রপ নোট করুন)

    Weavers
     Costura
      PreloadOrder
       SQLite.Interop
       tbb_debug
       tbb
      /PreloadOrder>
     /Costura
    /Weavers

এর সুবিধাটি হ'ল আপনাকে কোনও প্রাক বা পোস্ট বিল্ড ইভেন্ট লিখতে হবে না এবং শেষের পণ্যটি সম্পূর্ণরূপে একটি বড় ফাইলে অন্তর্ভুক্ত।


ফোল্ডারের নামটি কস্টুরা 32, ডকুমেন্টেশন github.com/Fody/Costura#Native-libraries-
এলটন স্যান্ডার্স


2

আমার এই সমস্যাটি হয়েছিল কারণ আমার পিসিতে ভিজ্যুয়াল সি ++ 2010 পুনরায় বিতরণযোগ্য ইনস্টল করা হয়নি। আপনি ইতিমধ্যে ভিজ্যুয়াল সি ++ 2010 পুনরায় বিতরণযোগ্য ইনস্টল না করে এটি ডাউনলোড করুন এবং ইনস্টল করুন (x86 বা 64 ডিএল দেখুন)।


হ্যাঁ. এটি আমার ক্ষেত্রেও ছিল ... কেবলমাত্র আমার জন্য ভিজ্যুয়াল সি ++ 2010 পুনরায় বিতরণযোগ্য এসপি 1 প্রয়োজন ছিল। আপনার সংস্করণে কোন রানটাইম প্রয়োজন তা যত্ন সহকারে পড়তে হ'ল বেস্ট সোলিউশন। উদাহরণস্বরূপ এখানে: system.data.sqlite.org/index.html/doc/trunk/www/downloads.wiki
ভেলজা রাদেনকোভিক

সর্বশেষ লিঙ্ক: সমর্থন.
microsoft.com/en-us/help/2977003/…

2

আমি একই সমস্যা পেয়েছি। যাইহোক, শেষ পর্যন্ত, আমি এটি ঠিক করতে পারি। বর্তমানে, আমি ভিজ্যুয়াল স্টুডিও 2013 সম্প্রদায়ের সংস্করণ ব্যবহার করি। আমি কেবল অ্যাড-> বিদ্যমান আইটেমটি ব্যবহার করি ... এবং যেখানে এসকিউএল.ডাটা.এসকিউএলাইট ফাইল রয়েছে সেখানে ব্রাউজ করি (আমার কেসটি 'সি: \ প্রোগ্রাম ফাইল (x86) \ সিস্টেম.ডাটা.এসকিউাইটাইট \ 2013 \ বিন')। আপনি এসেম্বলি ফাইলগুলিতে কী অন্তর্ভুক্ত করবেন তার প্রকারটি পরিবর্তন করতে ভুলবেন না (* .ডিল; * .পিডিবি) । সেই ফোল্ডারে ' SQLite.Interop.dll ' চয়ন করুন । সেখান থেকে এবং তারপরে, আমি কোনও সমস্যা ছাড়াই চালিয়ে যেতে পারি। তোমাদের সবার জন্য শুভ কামনা। ^ _ ^ পিএস আমি ওয়েব ফর্ম অ্যাপ্লিকেশন তৈরি করি। আমি এখনও উইন্ডো ফর্ম অ্যাপ্লিকেশন বা অন্যদের চেষ্টা করিনি।


2

প্ল্যাটফর্মের লক্ষ্যটি x86 বা x64 (এবং কোনও সিপিইউ নয়) তে সেট করার চেষ্টা করুন: ভিজ্যুয়াল স্টুডিওতে প্রকল্প-> বৈশিষ্ট্য-> বিল্ড-> প্ল্যাটফর্ম লক্ষ্য।


2

প্রকল্প ডিরেক্টরিতে SQLite.Interop.dll অনুলিপি করুন।

src\
  project\
      bin\   <-- Past in bin
         x64\
           SQLite.Interop.dll <-- Copy this if 64
         x86\
           SQLite.Interop.dll <-- Copy this if 32

সমস্যাটি সমাধান করার জন্য আমাকে বিন ফাইলটিতে আইআইএস_এপিপিপল সম্পাদনা করার অনুমতি দিতে হয়েছিল। স্রেফ ডিডিএল অনুলিপি করার ফলে ডেলিতে অ্যাক্সেস অস্বীকৃত হয়েছিল
আলেকজান্ডারডি

এই ফাইলটি যুক্ত করা সমস্যার সমাধান করেছে, তবে এটি একটি অস্থায়ী সমাধান।
কার্তিক গোয়েল

2

আমি এটির সাথে দীর্ঘ সময় ধরে লড়াই করেছি এবং মাঝে মাঝে আবিষ্কার করেছি যে পরীক্ষার সেটিংটি ভুল। এই চিত্রটি দেখুন: পরীক্ষার সেটিং

আমি কেবল পরীক্ষার সেটিংটি চেক না করেই সমস্যাটি অদৃশ্য হয়ে যায়। অন্যথায়, ব্যতিক্রম ঘটবে। আশা করি, এটি কাউকে সাহায্য করবে। নিশ্চিত নয় যে এটির মূল কারণ।


1
যদিও এই লিঙ্কটি প্রশ্নের উত্তর দিতে পারে, উত্তরের প্রয়োজনীয় অংশগুলি এখানে অন্তর্ভুক্ত করা এবং রেফারেন্সের জন্য লিঙ্কটি সরবরাহ করা ভাল। লিঙ্কযুক্ত পৃষ্ঠাগুলি পরিবর্তিত হলে লিঙ্ক-শুধুমাত্র উত্তরগুলি অবৈধ হতে পারে। - পর্যালোচনা থেকে
রবার্ট কলম্বিয়া

আমার ক্ষেত্রে, টেস্টসেটেটিং ফাইলটি ভুল: <টেস্টসেটেটিংস ... <ডেপুটেশন> <ডিপোরিয়মেন্ট আইটেমের নাম = "বিন \ রিলেজ \ a.test.dll"। ফাইল অবস্থান ভুল কনফিগার করা আছে।
টনি সান

2

ডিবাগ ফোল্ডারে x86 এবং x64 উভয়ের জন্য "SQLite.Interop.dll" ফাইলগুলি অনুলিপি করুন। এই ফাইলগুলি "x86" এবং "x64 ফোল্ডারে ডিবাগ ফোল্ডারে কপি করা উচিত।


2

আমার আবেদন একটি ওয়েব অ্যাপ্লিকেশন (ASP.NET MVC) এবং আমি অধীনে রান আবেদন পুকুর পরিবর্তন করতে হয়েছিল LocalSystemপরিবর্তে ApplicationPoolIdentity। এটা করতে:

  1. আইআইএস ম্যানেজার খুলুন
  2. আপনার সাইটের অধীনে চলমান অ্যাপ্লিকেশন পুলটি সন্ধান করুন।
  3. ক্রিয়াগুলি থেকে উন্নত সেটিংস ক্লিক করুন
  4. এতে পরিচয় পরিবর্তন করুন LocalSystem

কেন এই সমস্যাটি সমাধান করে আমার কোনও ধারণা নেই।


1

আমি জানি না এটি একটি ভাল উত্তর কিনা, তবে আমি "স্থানীয় সিস্টেম" এর একটি পরিচয় দিয়ে একটি অ্যাপডোমেনের অধীনে আমার অ্যাপ্লিকেশনটি চালিয়ে এই সমস্যাটি সমাধান করতে সক্ষম হয়েছি।


1

আমি একটি এসকিউএল ডাটাবেসে কিছু পরীক্ষার ডেটা যুক্ত করতে একটি সাধারণ কনসোল অ্যাপ্লিকেশন নিয়ে কাজ করছি এবং এই ত্রুটিটি পাচ্ছি। প্রকল্পের কনফিগারেশনটি হ'ল "যে কোনও সিপিইউ"। SQLite.Interop.dll অনুলিপি-ডিবাগ ফোল্ডারে অনুলিপি করে আমি এটি ঠিক করেছি। @Wil দ্বারা পদ্ধতিটি ব্যবহার করা আরও ভাল উপায় হবে তবে আপনি "যে কোনও সিপিইউ" কনফিগারেশনের জন্য এটি কীভাবে নির্দিষ্ট করবেন?


1

সমাবেশের জন্য কোন বিতর্ক থাকতে পারে? ডিএলএলে একটি ফাইল লক সহ আরও একটি অ্যাপ্লিকেশন রয়েছে কিনা তা পরীক্ষা করে দেখুন।

যদি এটির কারণ হয় তবে আপত্তিজনক প্রোগ্রামটি আবিষ্কার করার জন্য সিসিনটার্নালস প্রসেস এক্সপ্লোরারের মতো সরঞ্জাম ব্যবহার করা সহজ হওয়া উচিত ।

এইচটিএইচ, ক্লে


1

এই প্রশ্নটি দেখার জন্য কারও রেফারেন্সের জন্য:

আপনি যদি নুগেট প্যাকেজ ব্যবহার করেন তবে এটি একটি বিল্ড রুল ইনস্টল করে যা আপনার জন্য অনুলিপি করে। (System.Data.SQLite.Core.1.0.94.0 \ বিল্ড - বা আপনার ইনস্টলিত কোর এর যে কোনও সংস্করণ দেখুন) এর অধীনে দেখুন।

নুগেট ইনস্টলার স্বয়ংক্রিয়ভাবে আপনার প্রকল্পের ফাইলে নিয়ম যুক্ত করে।

এটি এখনও পরীক্ষার কেস সমস্যার সমাধান করে না। ডিপোরিয়ালটাইম ( https://stackoverflow.com/a/24411049/89584 ) পদ্ধতির একমাত্র সেখানে কাজ করা মনে হয়।


1

আমি এই সমস্যাটি জুড়ে ছুটে এসেছি, ওয়েবএপিআই / এমভিসি 5 ওয়েব প্রকল্প এবং একটি বৈশিষ্ট্য পরীক্ষা প্রকল্পের সমাধানে, যে উভয়ই একই ডেটা অ্যাক্সেস (বা, 'কোর') প্রকল্প থেকে সরে এসেছিল। আমি এখানে অন্য অনেকের মতো, ভিজুয়াল স্টুডিও 2013-এ নুগেটের মাধ্যমে ডাউনলোড করা একটি অনুলিপি ব্যবহার করছি।

আমি যা করেছি তা ভিজ্যুয়াল স্টুডিওতে ফিচার টেস্ট এবং ওয়েব প্রকল্পগুলিতে একটি x86 এবং x64 সমাধান ফোল্ডার যুক্ত করা হয়েছিল। আমি তখন একটি করেছি Right Click | Add Existing Item...এবং ..\SolutionFolder\packages\System.Data.SQLite.Core.1.0.94.0\build\net451\[appropriate architecture]those ফোল্ডারের প্রত্যেকের জন্য উপযুক্ত এসকিউএল.ইন.ট্র্যাপ.ডিল লাইব্রেরি যুক্ত করেছি । আমি তখন একটি করেনি Right Click | Properties, এবং সেট Copy to Output Directoryকরার Always Copy। পরের বার যখন আমার ফিচার টেস্টগুলি চালানোর দরকার হয়েছিল তখন পরীক্ষাগুলি সফলভাবে চলেছিল।

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