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


188

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

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

นี่เป็นรหัสเดียวกับที่ฉันเคยเช็คอินมาก่อน ทำไมตอนนี้ถึงทำเช่นนี้? ตอนนี้ฉันเห็น Debug x86 แทน Debug ในโฟลเดอร์ bin ของโครงการ xxx Debug x86 คืออะไรและเหตุใดฉันจึงไม่มี Debug เพียงอย่างเดียวที่เคยมีในโฟลเดอร์ bin


2
คุณลองสร้างใหม่ทั้งหมดหรือไม่? บางครั้งปัญหาที่แก้ไขแปลกพึ่งพาสำหรับฉัน ...
mezoid

คำตอบ:


246

เสียงเหมือนส่วนหนึ่งของโครงการจะถูกสร้างขึ้นสำหรับ x86 เท่านั้นในขณะที่ส่วนที่เหลือจะถูกสร้างขึ้นสำหรับ CPU / x64 ใด ๆ บิตนี้ฉันเช่นกัน คุณใช้ x64 (หรือเอ่อ ... IA64) หรือไม่

ตรวจสอบคุณสมบัติของโครงการและตรวจสอบให้แน่ใจว่าทุกอย่างถูกสร้างขึ้นสำหรับ "Any CPU" หากคุณอยู่ใน Visual Studio คุณสามารถตรวจสอบทุกสิ่งได้โดยไปที่เมนู "x86" หรือ "CPU ใด ๆ " (ถัดจากเมนู "Debug" / "Release") บนแถบเครื่องมือที่ด้านบนของหน้าจอและคลิก "เครื่องมือจัดการการกำหนดค่า ... "


1
เป็นที่โครงการ -> Properties-> Build หรือ Debug-> Properties-> Build เพิ่งอัพเดต VS2015 อัพเดต 14.0.25123.00 เวอร์ชัน 2 การอัปเดตนี้เพิ่งเปิดตัว 5/10/16 (เมื่อวานนี้!) ฉันพบแพลตฟอร์มเป้าหมายที่ตั้งค่าเป็น x64 ซึ่งทำให้เกิดข้อผิดพลาดที่ระบุไว้ การตั้งค่าเป็น "CPU ใด ๆ " ได้รับการแก้ไข
Michael D. O'Connor

179

หากคุณได้รับข้อผิดพลาดนี้ขณะที่เรียกใช้ไซต์ใน IIS 7+ บนเซิร์ฟเวอร์ 64 บิตคุณอาจมีแอสเซมบลีที่เป็น 32 บิตและกลุ่มแอปพลิเคชันของคุณจะมีตัวเลือก "เปิดใช้งานแอปพลิเคชัน 32 บิต" เป็นเท็จ ตั้งค่านี้เป็นจริงและรีสตาร์ทไซต์เพื่อให้ทำงานได้


5
@ Mayhem50 กันที่นี่ ขึ้นอยู่กับข้อผิดพลาดที่เกิดขึ้น ถ้าผ่านเว็บเซิร์ฟเวอร์ Visual Studio & Cassini สิทธิ์ของ Fraser หากเกิดขึ้นใน IIS7 + คำตอบของ Nick อาจเป็นวิธีแก้ไขที่เป็นไปได้มากที่สุด
Carl Heinrich Hancke

นี่เป็นคำตอบที่สมบูรณ์แบบสำหรับฉัน (ย้ายไซต์จาก IIS6 บน x86 ไปยัง IIS 7 บน x64)
DrStalker

ใช่นี่มันทำ ฉันย้ายไซต์จาก IIS6 บน x86 ไปยัง IIS 7 บน x64 ขอบคุณมาก!
ลูคัส

40

ฉันมีข้อผิดพลาดนี้เมื่อพยายามใช้Business Objects 4 ที่น่ากลัวสำหรับ. Net SDK

พวกเขาจัดส่งไฟล์ BusinessObjects * .dll ห้าไฟล์ แต่ทั้งหมดนี้เป็นแบบ 64 บิต

ในการโหลดหน้าเว็บของฉันฉันต้องคลิกที่Tools \ Optionsจากนั้นเปลี่ยนการตั้งค่านี้ใน VS2013:

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


ตัวเลือกนั้นไม่มีอยู่สำหรับฉัน ตัวเลือกเดียวบนหน้าจอนี้สำหรับฉันภายใต้ Visual Studio 2010 คือ "ใช้ IIS Express สำหรับเว็บไซต์และโครงการที่ใช้ไฟล์ใหม่"
Drew Chapin

ฉันมีตัวเลือกนี้ใน VS 2017 Professional
SKCS Kamal

33

จากนั้น inetmgr มาที่ Application pool-> การตั้งค่าขั้นสูงของ pool-> ของคุณจะมีตัวเลือก "Enable 32-Bit Applications" ที่ตั้งค่าเป็นจริง และเริ่มต้น IIS ตรวจสอบอีกครั้ง.!


ที่สองนี้ ฉันสร้างกลุ่มแอพใหม่สำหรับเว็บไซต์ของฉันและลืมสลับการตั้งค่านี้
AlbatrossCafe

1
สิ่งนี้แก้ไขให้ฉันเช่นกัน สิ่งเดียวที่ฉันต้องเปลี่ยนคือการเปลี่ยน Pipeline เป็นการรวมเพราะนี่ทำให้ฉันมีข้อผิดพลาดเช่นกันหลังจากใช้โปรแกรมฟิกซ์ข้างต้น
AxleWack

7

BadImageFormatException บนแอปพลิเคชันที่ทำงานบน IIS (ไม่ได้ทำงานจาก VS เนื่องจาก Visual Studio แก้ไขปัญหาโดยใช้บิลด์สำหรับ "CPU ใด ๆ ") อาจเกิดจากสาเหตุต่อไปนี้:

ไซต์เป็นเซิร์ฟเวอร์หนึ่งที่เป็น x64 และการตั้งค่าเริ่มต้นของกลุ่มแอปพลิเคชันสำหรับเปิดใช้งานแอปพลิเคชัน 32 บิตเป็นเท็จ และคุณมีชุดประกอบ 32- บิต

ในระดับของ Visual Studio การแก้ไขคือ:

  1. เปลี่ยนการตั้งค่าโครงการ "Target CPU" เป็น "ANYCPU"

7

ตรวจสอบให้แน่ใจว่าคุณยืนยันการตั้งค่าสำหรับ "ต้องการ 32 บิต" ในกรณีของฉัน Visual Studio 2012 มีการตั้งค่านี้ถูกตรวจสอบโดยค่าเริ่มต้น พยายามที่จะใช้อะไรจากภายนอก DLL ล้มเหลวจนกว่าฉันจะไม่ถูกตรวจสอบ "ชอบ 32 บิต"

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


4

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

เมื่อโครงการถูกคอมไพล์สำหรับ x86 แทน 'Any CPU ใด ๆ ' dll จะเข้าสู่โฟลเดอร์ bin \ x86 \ debug แทน bin \ debug (ซึ่งอาจเป็นที่ที่การอ้างอิงของคุณกำลังมองหา)

แต่ไม่ว่าในกรณีใดคุณควรใช้การอ้างอิงโครงการระหว่างโครงการของคุณ


0

ถ้าในขณะที่ใน Visual Studio พร้อม IIS express ทำงานและเมื่อเผยแพร่ล้มเหลวลองนี้:ป้อนคำอธิบายรูปภาพที่นี่

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