ฉันได้รับข้อผิดพลาด“ มีความพยายามโหลดโปรแกรมด้วยรูปแบบที่ไม่ถูกต้อง” ในโครงการจำลองแบบ SQL Server


318

ข้อผิดพลาดที่แน่นอนมีดังนี้

ไม่สามารถโหลดไฟล์หรือแอสเซมบลี 'Microsoft.SqlServer.Replication, Version = 9.0.242.0, Culture = neutral, PublicKeyToken = 89845dcd8080cc91' หรือการอ้างอิงอย่างใดอย่างหนึ่ง มีความพยายามในการโหลดโปรแกรมด้วยรูปแบบที่ไม่ถูกต้อง

ฉันเพิ่งเริ่มทำงานกับโครงการนี้อีกครั้งหลังจากสองเดือนไปยังโครงการอื่น มันทำงานได้อย่างสมบูรณ์แบบมาก่อนและฉันได้ตรวจสอบการอ้างอิงทั้งหมดอีกครั้ง

คำตอบ:


405

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

ที่มา: http://www.alexjamesbrown.com/uncategorized/could-not-load-file-or-assembly-chilkatdotnet2-or-one-of-its-dependencies-an-attempt-was-made-to-load- ที่มีโปรแกรมที่มีใช้ไม่ถูกต้องรูปแบบ /

ขณะตั้งค่าแอปพลิเคชันให้เรียกใช้บนเครื่องท้องถิ่นของฉัน (ใช้งาน Vista 64 บิต) ฉันพบข้อผิดพลาดนี้:

ไม่สามารถโหลดไฟล์หรือแอสเซมบลีChilkatDotNet2หรือการอ้างอิงอย่างใดอย่างหนึ่ง มีความพยายามในการโหลดโปรแกรมด้วยรูปแบบที่ไม่ถูกต้อง

เห็นได้ชัดว่าแอปพลิเคชันใช้ส่วนประกอบ ChilKatแต่ดูเหมือนว่ารุ่นที่เราใช้นั้นเป็นรุ่น 32 บิตเท่านั้น

เมื่อต้องการแก้ไขข้อผิดพลาดนี้ฉันตั้งค่ากลุ่มแอพของฉันใน IIS เพื่ออนุญาตแอปพลิเคชัน 32 บิต เปิดตัวจัดการ IIS คลิกขวาที่กลุ่มแอพแล้วเลือกการตั้งค่าขั้นสูง (ดูด้านล่าง)

ป้อนคำอธิบายรูปภาพที่นี่

จากนั้นตั้งค่า "เปิดใช้งานแอปพลิเคชัน 32 บิต" เป็น True

ป้อนคำอธิบายรูปภาพที่นี่

ทุกอย่างเสร็จเรียบร้อย!


สิ่งนี้จะทำให้พูลแอ็พพลิเคชันทั้งหมดทำงานเป็น 32 บิตและไม่เต็ม 64 บิตหรือไม่ การรวบรวมการพึ่งพาสำหรับ 64- บิต / ทุกแพลตฟอร์มจะเป็นทางออกที่ดีกว่าหรือไม่ ฉันมีปัญหานี้เนื่องจาก NFOP แต่เนื่องจากเป็นโอเพ่นซอร์สฉันจึงสามารถรวบรวมใหม่ได้
jamiebarrow

2
ลิงก์ใช้งานไม่ได้ แต่คำอธิบายของคุณเพียงพอที่จะแก้ปัญหาของฉันได้ +1
Andrew Shepherd

เชื่อมโยงกับคำแนะนำเกี่ยวกับวิธีการเปิดใช้งานแอปพลิเคชัน 32 บิต: blogs.msdn.com/b/rakkimk/archive/2007/11/03//
แบรนดอน S

15
อาจเป็นที่น่าสังเกตว่าโซลูชัน AppPool นี้ใช้กับแอปพลิเคชัน ASP.NET เท่านั้น - อาจสร้างความสับสนให้กับ devs บางตัวที่ไม่เคยใช้ / กำหนดค่า ASP.NET หรือ IIS
galaktor

ไม่สามารถแก้ไขได้ใน IIS7 เฉพาะใน
IIS7.5

120

ฉันพบวิธีแก้ปัญหาแล้ว ฉันเพิ่งอัพเกรดเครื่องเป็น Windows 2008 Server 64 บิต SqlServer.Replication namespace ถูกเขียนขึ้นสำหรับแพลตฟอร์ม 32 บิต สิ่งที่ฉันต้องทำเพื่อให้มันทำงานอีกครั้งคือการตั้งค่าแพลตฟอร์มเป้าหมายในคุณสมบัติสร้างโครงการเป็น X86


ฉันกำลังมีปัญหากับ DLL แต่โครงการของฉัน> คุณสมบัติ HDP ... ไม่มีแท็บ "สร้าง" (ดูเหมือนทุกอย่าง แต่ดูเหมือนไม่ใช่ แต่ไม่ใช่) ทั้งแท็บการคอมไพล์และดีบั๊กมีรายการแบบหล่นลง "แพลตฟอร์ม" แต่รายการเดียวในรายการแบบเลื่อนลงในทั้งสองกรณีคือ "ใช้งาน (CPU ใดก็ได้)"
B. Clay Shannon

ฉันบังเอิญพบปัญหาข้างต้น ฉันมีทุกอย่างที่ทำงานใน 64 บิตและเป้าหมายการสร้างของฉันคือ CPU ใด ๆ เมื่อฉันเปลี่ยนนี้ 64 บิตจะทำงานสมบูรณ์ดี :)
Madhurya GANDI

87

Any CPUเปลี่ยนค่าสำหรับแพลตฟอร์มเป้าหมายในหน้าคุณสมบัติโครงการเว็บของคุณไป

ป้อนคำอธิบายรูปภาพที่นี่


ไม่มีผล แต่น่าเสียดายที่
Jonathan

4
ฉันผิด - มันใช้งานได้หลังจากกำจัดโฟลเดอร์ 'bin' ทั้งหมดของฉัน ขอบคุณ!
โจนาธาน

แก้ไขปัญหาของฉันด้วย แต่หลังจากทำเช่นนี้สำหรับทุกโครงการในโซลูชันของฉัน ขั้นตอนดังกล่าวสำหรับโครงการ C # สำหรับโครงการ VB.NET เปลี่ยนคุณสมบัติของโครงการ> คอมไพล์> ตัวเลือกการคอมไพล์ขั้นสูง> CPU เป้าหมายเป็น "AnyCPU"
Francois Botha

6
ในกรณีของฉันโครงการได้กำหนดเป้าหมายไปที่ "Any CPU" แล้ว แต่ฉันใช้ Windows 64 บิตและพยายามที่จะ DllImport ไดรเวอร์ฮาร์ดแวร์ของโรงเรียนเก่า การเปลี่ยนเป้าหมายเป็น x86 เป็นการเฉพาะสำหรับฉัน
bsegraves

ในกรณีของฉันฉันต้องการทำงานภายใต้ x64 มันไม่ทำงาน หลังจากเปลี่ยนคำแนะนำทั้งหมดฉันก็ต้องเปลี่ยน 'พยานฯ ' ใต้เว็บเป็น x64
SKCS Kamal

52

ไปที่ IIS -> กลุ่มแอปพลิเคชัน -> การตั้งค่าขั้นสูง -> เปิดใช้งานแอปพลิเคชัน 32 บิต


Clay คุณใช้ IIS เวอร์ชันใด?
Harpal

23

เราเพิ่งพบปัญหาเมื่อพยายามเรียกใช้รหัสจาก Visual Studio ในกรณีนี้คุณต้องใช้
เครื่องมือ> ตัวเลือก> โครงการและโซลูชัน> โครงการเว็บและตรวจสอบ "ใช้ IIS Express เวอร์ชัน 64 บิตสำหรับเว็บไซต์และโครงการ"


1
นี่คือสิ่งที่ใช้งานได้ในที่สุดสำหรับฉัน โดยเฉพาะอย่างยิ่งสำหรับผู้ที่พยายามดีบัก Web API ด้วย Service Fabric libraries !!! หากคุณใช้ Service Fabric DLLs ใด ๆ ในโครงการของคุณตรวจสอบให้แน่ใจว่าคุณกำลังใช้โซลูชันด้านบน
Chris Dutra

นี่เป็นทางออกเดียวที่ได้ผลสำหรับฉัน ขอบคุณ : D
Jeremy Styers

ทำงานให้ฉันด้วย!
CùĐứcHiếu

11

สำหรับผู้ที่ได้รับข้อผิดพลาดนี้ในโครงการASP.NET MVC 3ภายใน Visual Studio นั้น:

ในแอพ ASP.NET MVC 3 ที่ฉันใช้งานอยู่ฉันพยายามเพิ่มการอ้างอิงถึง Microsoft.SqlServer.BatchParser ไปยังโครงการเพื่อแก้ไขปัญหาที่ขาดหายไปในเซิร์ฟเวอร์การปรับใช้ (แอพของเราใช้ SMO การแก้ไขที่ถูกต้องคือการติดตั้ง SQL Server Native Client และอีกสองอย่างบนเซิร์ฟเวอร์การปรับใช้)

แม้หลังจากที่ฉันลบการอ้างอิงถึง BatchParser ฉันยังคงได้รับข้อผิดพลาด "มีความพยายามทำ ... " อ้างอิง BatchParser DLL อ้างอิงทุกหน้า ASP.NET MVC 3 ที่ฉันเปิดและข้อผิดพลาดนั้นตามมาด้วยการแยกวิเคราะห์หลายสิบหน้า ข้อผิดพลาด

หากสิ่งนี้เกิดขึ้นกับคุณทำการค้นหาไฟล์และดูว่า DLL ยังคงอยู่ในโฟลเดอร์ \ bin ของโปรเจ็กต์ของคุณหรือไม่ แม้ว่าคุณจะสร้างใหม่ Visual Studio ก็ไม่จำเป็นต้องล้างข้อมูลทุกอย่างในโฟลเดอร์ \ bin ทั้งหมดของคุณ เมื่อฉันลบ DLL ออกจากถังขยะและสร้างขึ้นอีกครั้งข้อผิดพลาดก็หายไป


ฉันเพิ่งสร้างใหม่และปัญหาก็หายไปโดยไม่ต้องลบ DLL ด้วยตนเอง ขอบคุณ!
เทรเวอร์

4

ฉันมีสิ่งนี้ในแอป MVC5 ใน Windows 10 เทียบกับ IIS Express ทางออกของฉันคือต่อไปนี้:

  • เครื่องมือ =>
    • ตัวเลือก =>
      • โครงการและโซลูชั่น =>
        • โครงการเว็บ =>
          • ใช้ IIS Express เวอร์ชัน 64 บิตสำหรับเว็บไซต์และโครงการ

3

เปลี่ยนเป็น 32- บิต (จริง) ใช้งานได้

ถ้าคุณได้ความยาวนี้ต้องไม่น้อยกว่าศูนย์ ชื่อพารามิเตอร์: ปัญหาความยาวในการกำหนดค่าเซิร์ฟเวอร์ iis ทำสิ่งที่ง่าย ๆ เปลี่ยนสตริงการเชื่อมต่อในไฟล์ web.config เช่นชื่อเซิร์ฟเวอร์ sql ของคุณและชื่อเซิร์ฟเวอร์และรีสตาร์ท iis จากนั้นลองโหลดหน้าเว็บที่ใช้งานได้


2

หากการเผยแพร่ใน Visual Studio 2012เมื่อเกิดข้อผิดพลาดให้ลองยกเลิกการเลือกตัวเลือก"Procompile ระหว่างการเผยแพร่"ในตัวช่วยสร้างการเผยแพร่

ยกเลิกการทำเครื่องหมายที่ "Precompile ระหว่างการเผยแพร่"


0

ในแอปพลิเคชันฟอร์ม windows ฉันทำสิ่งนี้คลิกขวาที่ Project-> Properties-> Build-> เลือกช่องทำเครื่องหมายชอบ 32- บิต ขอบคุณทุกคน


0
  1. ลบไดเรกทอรีทดสอบชั่วคราวที่นี่ C: \ Users (ผู้ใช้) \ AppData \ Local \ Temp \ VisualStudioTestExplorerExtensions \

  2. ตั้งค่าโครงการทั้งหมดเป็น x64 ใน Visual Studio

  3. ตั้งค่าสถาปัตยกรรมตัวประมวลผลเริ่มต้นเป็น x64 (ทดสอบ / TestSettings / สถาปัตยกรรมตัวประมวลผลเริ่มต้น)

ตรวจสอบให้แน่ใจว่าได้สร้างไฟล์โซลูชันแล้วหวังว่าจะช่วยได้!


0

การเปลี่ยน Target Framework ในคุณสมบัติโครงการจาก. NET Framework 4.7.1 เป็น 4.6.2 ทำงานให้ฉัน

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