ไม่สามารถโหลดไฟล์หรือแอสเซมบลี 'System.Data.SQLite'


126

ฉันได้ติดตั้ง ELMAH 1.1 .Net 3.5 x64 ในโปรเจ็กต์ ASP.NET ของฉันและตอนนี้ฉันได้รับข้อผิดพลาดนี้ (เมื่อใดก็ตามที่ฉันพยายามดูหน้าใด ๆ ):

ไม่สามารถโหลดไฟล์หรือแอสเซมบลี 'System.Data.SQLite, เวอร์ชัน = 1.0.61.0, วัฒนธรรม = เป็นกลาง, PublicKeyToken = db937bc2d44ff139' หรือการอ้างอิงอย่างใดอย่างหนึ่ง มีความพยายามในการโหลดโปรแกรมที่มีรูปแบบไม่ถูกต้อง

คำอธิบาย: มีข้อยกเว้นที่ไม่สามารถจัดการได้เกิดขึ้นระหว่างการดำเนินการตามคำขอของเว็บปัจจุบัน โปรดตรวจสอบการติดตามสแต็กสำหรับข้อมูลเพิ่มเติมเกี่ยวกับข้อผิดพลาดและที่มาที่ไปในโค้ด

รายละเอียดข้อยกเว้น: System.BadImageFormatException: ไม่สามารถโหลดไฟล์หรือแอสเซมบลี 'System.Data.SQLite, เวอร์ชัน = 1.0.61.0, วัฒนธรรม = เป็นกลาง, PublicKeyToken = db937bc2d44ff139' หรือการอ้างอิงอย่างใดอย่างหนึ่ง มีความพยายามในการโหลดโปรแกรมที่มีรูปแบบไม่ถูกต้อง

รายละเอียดข้อผิดพลาดเพิ่มเติมที่ด้านล่าง

แพลตฟอร์ม Active Solution ของฉันคือ "CPU ใด ๆ " และฉันใช้งานบน x64 Windows 7 บน x64 ซึ่งแน่นอนว่าโปรเซสเซอร์ สาเหตุที่เราใช้ ELMAH เวอร์ชันนี้เป็นเพราะ 1.0 .Net 3.5 (x86 ซึ่งเป็นแพลตฟอร์มเดียวที่คอมไพล์) ทำให้เราเกิดข้อผิดพลาดเดียวกันนี้บนเซิร์ฟเวอร์ x64 Windows ของเรา

ฉันได้ลองรวบรวม x86 และ x64 แล้วและได้รับข้อผิดพลาดเดียวกัน ฉันได้ลองลบเอาต์พุตคอมไพเลอร์ทั้งหมดแล้ว (bin และ obj) ในที่สุดฉันได้ทำการอ้างอิงถึง SQLite dll โดยตรงสิ่งที่ไม่จำเป็นสำหรับโครงการในการทำงานบนเซิร์ฟเวอร์และฉันได้รับข้อผิดพลาดของคอมไพเลอร์นี้:

ข้อผิดพลาด 1 คำเตือนเป็นข้อผิดพลาด: การสร้างแอสเซมบลี - แอสเซมบลีที่อ้างอิง 'System.Data.SQLite.dll' กำหนดเป้าหมายไปยัง MyProject ของโปรเซสเซอร์อื่น

มีความคิดว่าปัญหาอาจเป็นอย่างไร

รายละเอียดข้อผิดพลาดเพิ่มเติม:

ข้อผิดพลาดที่มา:

มีการสร้างข้อยกเว้นที่ไม่สามารถจัดการได้ในระหว่างการดำเนินการตามคำขอของเว็บปัจจุบัน ข้อมูลเกี่ยวกับที่มาและตำแหน่งของข้อยกเว้นสามารถระบุได้โดยใช้การติดตามสแต็กข้อยกเว้นด้านล่าง

กองติดตาม:

[BadImageFormatException: ไม่สามารถโหลดไฟล์หรือแอสเซมบลี 'System.Data.SQLite, Version = 1.0.61.0, Culture = neutral, PublicKeyToken = db937bc2d44ff139' หรือการอ้างอิงอย่างใดอย่างหนึ่ง มีความพยายามในการโหลดโปรแกรมที่มีรูปแบบไม่ถูกต้อง]
System.Reflection.Assembly._nLoad (AssemblyName fileName, String codeBase, Evidence assemblySecurity, Assembly locationHint, StackCrawlMark & ​​stackMark, Boolean throwOnFileNotFound, Boolean forIntrospection) +0
System.Reflection.Assembly .nLoad (ชื่อไฟล์ AssemblyName, String codeBase, Evidence assemblySecurity, Assembly locationHint, StackCrawlMark & ​​stackMark, Boolean throwOnFileNotFound, Boolean forIntrospection) +43
System.Reflection.Assembly.InternalLoad (AssemblyName assemblyRef, Evidence assemblySecurity, StackCrawlMark & ​​stackMark, Boolean forIntrospection) +127 System.Reflection.Assembly.InternalLoad (String assemblyString, Evidence assemblySecurity, StackCrawlMark & ​​stackMark.Antrosslection. โหลด (String assemblyString) +28
System.Web.Configuration.CompilationSection.LoadAssemblyHelper (String assemblyName, Boolean starDirective) +46

[ConfigurationErrorsException: ไม่สามารถโหลดไฟล์หรือแอสเซมบลี 'System.Data.SQLite, เวอร์ชัน = 1.0.61.0, วัฒนธรรม = เป็นกลาง, PublicKeyToken = db937bc2d44ff139' หรือการอ้างอิงอย่างใดอย่างหนึ่ง มีความพยายามในการโหลดโปรแกรมที่มีรูปแบบไม่ถูกต้อง]
System.Web.Configuration.CompilationSection.LoadAssemblyHelper (String assemblyName, Boolean starDirective) +613 System.Web.Configuration.CompilationSection.LoadAllAssembliesFromAppDomainBinDirectory () +203 System.Web.Configuration .CompilationSection.LoadAssembly (AssemblyInfo ai) +105
System.Web.Compilation.BuildManager.GetReferencedAssemblies (CompilationSection compConfig) +178
System.Web.Compilation.BuildProvidersCompiler..ctor (VirtualPath configPath, Boolean supportLocalization, String outputAssemblyName)
System.Web.Compilation.ApplicationBuildProvider.GetGlobalAsaxBuildResult (Boolean isPrecompiledApp) +232
System.Web.Compilation.BuildManager.CompileGlobalAsax () +52 System.Web.Compilation.BuildManager.EnsureTopLevelFilesCompiled () +337

[HttpException (0x80004005): ไม่สามารถโหลดไฟล์หรือแอสเซมบลี 'System.Data.SQLite, เวอร์ชัน = 1.0.61.0, วัฒนธรรม = เป็นกลาง, PublicKeyToken = db937bc2d44ff139' หรือการอ้างอิงอย่างใดอย่างหนึ่ง มีความพยายามในการโหลดโปรแกรมด้วยรูปแบบที่ไม่ถูกต้อง]
System.Web.Compilation.BuildManager ReportTopLevelCompilationException () +58 System.Web.Compilation.BuildManager.EnsureTopLevelFilesCompiled () +512 System.Web.Hosting.HostingEnvironmentInitialize ( ApplicationManager appManager, IApplicationHost appHost, IConfigMapPathFactory configMapPathFactory, HostingEnvironmentParameters hostingParameters) +729

[HttpException (0x80004005): ไม่สามารถโหลดไฟล์หรือแอสเซมบลี 'System.Data.SQLite, เวอร์ชัน = 1.0.61.0, วัฒนธรรม = เป็นกลาง, PublicKeyToken = db937bc2d44ff139' หรือการอ้างอิงอย่างใดอย่างหนึ่ง มีความพยายามในการโหลดโปรแกรมที่มีรูปแบบไม่ถูกต้อง]
System.Web.HttpRuntime.FirstRequestInit (บริบท HttpContext) +8896783
System.Web.HttpRuntime.EnsureFirstRequestInit (บริบท HttpContext) +85
System.Web.HttpRuntime.ProcessRequestInternal (HttestpWorkerRequestInternal ) +259


บันทึกฟิวชั่น (การรวมการประกอบ) มีประโยชน์มากกว่าในกรณีเช่นนี้มากกว่าแผ่นงานการติดตามสแต็ก
Anton Tykhyy

1
ดูเหมือนว่าปัญหาคือ Cassini คือ x86
pupeno

ฉันมีปัญหาเดียวกันและต้องละทิ้ง ELMAH เนื่องจากสภาพแวดล้อมการผลิต / การพัฒนาที่หลากหลายที่เรามี เนื่องจากการใช้ SQLite บนเว็บเซิร์ฟเวอร์การผลิตที่มีปริมาณการใช้งานสูงนั้นฟังดูไม่ค่อยดีนักและความจริงที่ว่า SQLite dll เป็นแอสเซมบลีเดียวใน ELMAH ที่บังคับให้มีสองเวอร์ชันที่แตกต่างกันสำหรับ x86 และ 64x บิตฉันสงสัยว่าทำไมพวก ELMAH ถึงดึง มันออกมาและทำให้เป็นทางเลือกแทนที่จะเป็นตอนนี้
Khash

คำตอบ:


122

System.Data.SQLite.dllเป็นแอสเซมบลีแบบผสมกล่าวคือมีทั้งโค้ดที่มีการจัดการและโค้ดเนทีฟ ดังนั้นค่าเฉพาะSystem.Data.SQLite.dllจึงเป็น x86 หรือ x64 แต่ไม่ทั้งคู่

อัปเดต ( เอื้อเฟื้อ J. Pablo Fernandez ): Cassini ซึ่งเป็นเว็บเซิร์ฟเวอร์การพัฒนาที่ Visual Studio ใช้เมื่อคุณกด F5 หรือคลิกปุ่ม«เล่น»สีเขียวคือ x86 เท่านั้นซึ่งหมายความว่าแม้ว่าเวิร์กสเตชันของคุณจะเป็น x64 แต่คุณจะเป็นเพียง สามารถใช้ System.Data.SQLite.dll เวอร์ชัน x86 ได้

อีกทางเลือกหนึ่งคือไม่ต้องใช้ Cassini แต่เป็น IIS7 ซึ่งเป็น x64 อย่างถูกต้อง


3
ฉันใช้เวอร์ชัน x64 บนคอมพิวเตอร์ x64
pupeno

คุณลองใช้รุ่น x86 หรือไม่?
Anton Tykhyy

2
ทางเลือกใหม่ที่พร้อมใช้งานเมื่อไม่นานมานี้คือการใช้ IIS Express ที่ให้คุณตั้งค่าประเภทของแอปพลิเคชันพูลที่คุณต้องการใช้
Raul Vejar

@Raul Vejar: โปรดอธิบายอย่างละเอียดว่าคุณลักษณะการเลือกพูลแอปพลิเคชันของ IIS Express ช่วยแก้ปัญหาการประกอบ 32 บิต / 64 บิตได้อย่างไร ขอบคุณ
ทิม

@Tim คุณลักษณะดังกล่าวช่วยให้คุณสามารถเลือกประเภทของพูลแอปพลิเคชันที่คุณต้องการใช้ไม่ว่าจะเป็น 32 หรือ 64 บิตด้วยวิธีนี้คุณจะสามารถควบคุมลักษณะที่ได้รับการแก้ไขใน Cassini และทำงานกับไลบรารีบิตเดียวกับที่คุณมี กล่าวอีกนัยหนึ่งถ้าคุณใช้ SQLite dll รุ่น 32 บิตคุณควรเลือกกลุ่มแอปพลิเคชัน 32 บิตบน IIS Express สำหรับไลบรารีเวอร์ชัน 64 บิตคุณควรเลือกพูลแอปพลิเคชัน 64 บิต
Raul Vejar

77

ตรวจสอบให้แน่ใจว่า "เปิดใช้งานแอปพลิเคชัน 32 บิต" ถูกตั้งค่าเป็นเท็จสำหรับพูลแอป


2
ใช้งานได้หากคุณต้องการใช้ x86 dll บนเครื่อง 64 บิต ในกรณีของเราสภาพแวดล้อมการพัฒนาและการผลิตไม่ตรงกันดังนั้นนี่คือสิ่งที่ทำงานได้ดีที่สุด
Rob

17
การตั้งค่าเป็นจริงสำหรับฉันช่วยแก้ปัญหาได้จริง ฉันเดาว่า Elmah มาพร้อมกับแอสเซมบลี 32 บิต sql lite ตามค่าเริ่มต้น

1
+1 สำหรับทั้ง @Jirapong และ Sergey เพราะการตั้งค่านี้ทำให้ฉันต้องจัดการเพื่อให้สิ่งต่างๆทำงานได้ดี ในกรณีของฉันฉันคิดว่าฉันมี SqlLite DLL เวอร์ชัน x86 และต้องการ Enable 32 - Bit Applications เพื่อตั้งค่าเป็น "true"
t3rse

43

ไปที่ไฟล์IIS7 Application Pool -> advanced settings and set the 32-bit application to true.


ฉันใช้ windows 7 และฉันพบปัญหานี้ การเปิด 32 บิตคงที่สำหรับฉันน่าจะเป็นเพราะสำเนา DLL ของฉันเป็น 32 บิต
Doug

1
FYI: จำเป็นต้องตั้งค่าเอกลักษณ์พูลแอปพลิเคชันเป็น LocalSystem เพื่อให้ทำงานได้: ^
Illuminati

และตรวจสอบให้แน่ใจว่ามี SQLite.Interop.dll stackoverflow.com/questions/4816529/…
Morten Holmgaard

14

สิ่งนี้ง่ายมากหากคุณไม่ได้ใช้ SQLite:

คุณสามารถลบ SQLite DLL จากโฟลเดอร์ bin ของโซลูชันของคุณจากนั้นจากโฟลเดอร์ที่คุณอ้างอิง ELMAH สร้างใหม่และแอปของคุณจะไม่พยายามโหลด DLL นี้ที่คุณไม่ได้ใช้งาน


5
+1 หากคุณไม่ได้ใช้ SQLite แล้วทำไมต้องกังวลกับการแก้ไข DLL ที่อ้างอิง? สวยสง่าและเป็นสิ่งที่ฉันต้องการ
bhavinb

สิ่งนี้ใช้งานได้ในเครื่อง แต่แล้วฉันก็ได้รับข้อผิดพลาดหลังจากปรับใช้กับ Azure
stuartdotnet

8

ฉันมีเครื่อง dev 64 บิตและเซิร์ฟเวอร์สร้าง 32 บิต ฉันใช้รหัสนี้ก่อนการเริ่มต้น NHibernate ใช้งานได้อย่างมีเสน่ห์กับสถาปัตยกรรมใด ๆ (เช่น 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 mvc และมันไม่ได้ผลสำหรับฉัน
Glenn

1
แทนที่จะไปที่ตัวแปรสภาพแวดล้อมคุณสามารถใช้ CLR โดยตรง: string arch = IntPtr.Size == 8? "x64": "x86";
Jason Morse

2
หรือคุณสมบัติEnvironment.Is64BitProcess (ตั้งแต่. NET4)
riezebosch

5

ในกรณีของเราไม่ทำงานเนื่องจากเซิร์ฟเวอร์การผลิตของเราขาดหายไป

Microsoft Visual C ++ 2010 SP1 Redistributable Package (x86)

เราติดตั้งและทำงานได้ดี Application Pool ต้องมี Enable 32-bit Applications ที่ตั้งค่าเป็น true และคุณต้องใช้ไลบรารีเวอร์ชัน x86


1
ใช้ได้ผลสำหรับฉัน มันให้ข้อความแสดงข้อผิดพลาดโดยไม่ต้องชี้ว่าไลบรารี C หายไปซึ่งแย่มาก
brk

1
สำหรับฉันฉันได้ติดตั้ง vcredist 2008 x64 สำหรับ System.Data.SQLite เวอร์ชัน = 1.0.99.0, วัฒนธรรม = เป็นกลาง, PublicKeyToken = db937bc2d44ff139
themadmax

5

ในฐานะที่เป็นคนที่ต้องจัดการกับรายงานข้อผิดพลาดเล็กน้อยบน Roadkill Wiki ด้วยปัญหาเดียวกันทั้งหมดนี่คือสิ่งที่คุณต้องทำ:

  • คุณใช้ x64 หรือ x86? Sqlite มาพร้อมกับ DLL สำหรับสถาปัตยกรรมที่แยกจากกัน - คัดลอกไฟล์ที่ถูกต้องไปยังโฟลเดอร์ bin ของคุณมี DLLS สองตัวสำหรับผู้ให้บริการอย่างเป็นทางการ:System.Data.SQLite.dll System.Data.SQLite.Linq.dll
  • หากคุณไม่สามารถกังวลกับการค้นหาแอสเซมบลีเหล่านี้ได้ให้เปิดใช้งานโหมด 32 บิตสำหรับ App Pool ของคุณ (โดยปกติจะเป็นโซลูชันสำหรับเครื่อง dev เท่านั้น)
  • หากคุณโฮสต์บนเซิร์ฟเวอร์คุณจะต้องมี Microsoft C ++ Runtime แบบแจกจ่ายต่อได้ซึ่งไม่ได้ติดตั้งบนเซิร์ฟเวอร์ 2008 R2 ตามค่าเริ่มต้น x64 รุ่น , รุ่น x86

มันเป็นความเจ็บปวดอย่างแท้จริงในตูดว่าคุณต้องข้ามกี่ห่วงเมื่อแจกจ่ายไบนารี SQLite .NET อีกครั้งวิธีแก้ปัญหาของ Roadkill ในท้ายที่สุดคือการคัดลอกไบนารีที่ถูกต้องไปยังโฟลเดอร์ ~ / bin ตามสถาปัตยกรรมที่คุณใช้ . ขออภัยที่ไม่สามารถแก้ปัญหารันไทม์ C ++ ได้


5

ฉันแก้ไขสิ่งนี้โดยการติดตั้ง System.Data.SQLite พร้อมส่วนขยาย Nuget ส่วนขยายนี้สามารถใช้สำหรับ Visual Studio 2010 หรือสูงกว่า ขั้นแรกคุณต้องติดตั้งส่วนขยาย Nuget สามารถติดตามได้ที่นี่:

  • ไปที่ Visual Studio 2010 เมนู -> เครื่องมือ
  • เลือกตัวจัดการส่วนขยาย
  • ป้อน NuGet ในช่องค้นหาและคลิกแกลเลอรีออนไลน์ กำลังรอดึงข้อมูล ...
  • เลือก NuGet Package Manager ที่ดึงมาแล้วคลิกดาวน์โหลด กำลังรอดาวน์โหลด ...
  • คลิกติดตั้งบน Visual Studio Extension Installer NuGet Package Manager รอให้การติดตั้งเสร็จสมบูรณ์
  • คลิกปิดและ 'รีสตาร์ททันที

ประการที่สองตอนนี้คุณสามารถติดตั้ง SQLite:

และตอนนี้คุณสามารถใช้ System.Data.SQLite

ในกรณีนี้คุณจะเห็นสองโฟลเดอร์ x64 และ x86 โฟลเดอร์เหล่านี้มี SQLite.Interop.dll ตอนนี้ไปที่หน้าต่างคุณสมบัติของ dll เหล่านั้นและตั้งค่าการดำเนินการสร้างคือเนื้อหาและคัดลอกไปยังไดเรกทอรีผลลัพธ์คือคัดลอกเสมอ

นั่นคือวิธีของฉัน

ขอบคุณ Kim Tho Pham เมือง HoChiMinh ประเทศเวียดนาม อีเมล: tho.phamkim@gmail.com


4

การโหลดด้วยตนเองที่เกี่ยวข้องกับการประกอบ System.Data.SQLite สามารถแก้ไขปัญหานี้ได้

เปลี่ยนรหัสของ gatapia ดังนี้:

    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

ฉันได้รับข้อผิดพลาดนี้เมื่อเซิร์ฟเวอร์ windows ของเราถูกแปลงจากระบบปฏิบัติการ 32 บิตเป็น 64 บิต แอสเซมบลีที่ส่งข้อผิดพลาดถูกตั้งค่าให้คอมไพล์ในโหมด x86 (เช่นโหมด 32) ฉันเปลี่ยนเป็น "CPU ใดก็ได้" และนั่นก็เป็นเคล็ดลับ คุณสามารถเปลี่ยนค่านี้ได้โดยทำดังต่อไปนี้:

คลิกขวาที่โครงการไปที่ Properties -> Build -> Platform Target -> change to "Any CPU"


1
ฉันพยายามใช้ System.Data.SQLite.dll 32 บิตและได้รับข้อยกเว้นนี้เมื่อทำงานบน cpu 64 บิต ฉันเปลี่ยนเป้าหมายแพลตฟอร์มจาก "CPU ใด ๆ " เป็น "x86" และทำให้ข้อยกเว้นหายไป ฉันคิดว่าถ้าคุณไม่ต้องการเพิ่มประสิทธิภาพการทำงานจะเป็นการดีกว่าที่จะสร้างตัวส่วนร่วมน้อยที่สุดดังนั้นจึงควรทำงานบน cpu 32 หรือ 64 บิต
cdavidyoung

3

ฉันแก้ไขสิ่งนี้ผิดปกติพอโดยติดตั้ง System.Data.SQLite ผ่านแอปพลิเคชัน Nuget GUI ซึ่งตรงข้ามกับคอนโซลตัวจัดการแพ็คเกจ

การติดตั้งผ่านคอนโซลไม่รวมการอ้างอิงที่ไลบรารีนี้จำเป็นต้องเรียกใช้


3

System.Data.SQLiteมีการพึ่งพาSystem.Data.SQLite.interopให้แน่ใจว่าแพคเกจทั้งสองรุ่นเดียวกันและมีทั้งx86

นี่เป็นคำถามเก่า แต่ฉันลองทำทุกข้อแล้ว ฉันกำลังทำงานกับโปรเจ็กต์x86อย่างเคร่งครัดดังนั้นจึงไม่มีสองโฟลเดอร์ / x86, / x64 แต่ด้วยเหตุผลบางประการSystem.Data.SQLiteเวอร์ชันนี้เป็นเวอร์ชันSystem.Data.SQLite.interopอื่นเมื่อฉันดึง dll ที่ตรงกันปัญหาได้รับการแก้ไข


1

ฉันคิดวิธีแก้ปัญหาด่วน 2 วิธี อย่างใดอย่างหนึ่งสำหรับฉัน ฉันคิดว่าปัญหาเป็นเพราะสิทธิ์

1) แทนที่จะใช้ไฟล์ Elmah.dll จากไดเรกทอรี net-2.0 ฉันใช้ Elmah.dll จาก net-1.1

2) แทนที่จะเก็บ Elmah.dll ไว้ในไดเร็กทอรี bin ของโครงการ ฉันสร้างไดเรกทอรี dll เพื่อใส่เข้าไป



0

คุณสามารถลบโฟลเดอร์ดีบัก bin และคอมไพล์ใหม่อีกครั้งได้หรือไม่?

หรือตรวจสอบการอ้างอิงโครงการของคุณเพื่อSystem.Data.SQLiteติดตามตำแหน่งที่ตั้งอยู่จากนั้นเปิด dll ในตัวสะท้อนแสง หากคุณไม่สามารถเปิดได้นั่นหมายความว่า dll เสียหายคุณอาจต้องการค้นหาอันที่ถูกต้องหรือติดตั้ง. net framework ใหม่


ฉันได้ลองเพิ่มการอ้างอิงไปยัง System.Data.SQLite โดยตรง (นอกเหนือจากการลบ bin และ obj) และฉันได้รับข้อผิดพลาดนี้: Error 1 Warning as Error: Assembly generation - Referenced assembly 'System.Data.SQLite.dll 'กำหนดเป้าหมายไปยัง MyProject โปรเซสเซอร์อื่น
pupeno

0

หากคุณใช้ IIS Express เป็นเว็บเซิร์ฟเวอร์บนเครื่องพัฒนาของคุณฉันจะเปลี่ยนเป็น Local IIS สิ่งนี้ได้ผลสำหรับฉัน


0

นี่เป็นโพสต์เก่า แต่อาจช่วยให้บางคนที่ค้นหาข้อผิดพลาดนี้ลองตั้งค่า "เปิดใช้งานแอปพลิเคชัน 32 บิต" เป็น True สำหรับแอปพูล นั่นคือสิ่งที่แก้ไขข้อผิดพลาดให้ฉัน ฉันหาวิธีแก้ปัญหานี้โดยอ่านความคิดเห็นเกี่ยวกับคำตอบของ @ beckelmw


0

คุณอาจติดตั้งแพ็คเกจที่ไม่ถูกต้อง คุณต้องการแพคเกจที่ผลิตโดยMicrosoftซึ่งใช้โมเดลผู้ให้บริการ System.Data.Common

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.