Không thể tải tập tin hoặc lắp ráp 'xxx' hoặc một trong các phụ thuộc của nó. Một nỗ lực đã được thực hiện để tải một chương trình với định dạng không chính xác


188

Tôi vừa kiểm tra một bản sửa đổi từ Subversion sang một thư mục mới. Đã mở giải pháp và tôi nhận được điều này khi chạy:

Không thể tải tập tin hoặc lắp ráp 'xxxx' hoặc một trong các phụ thuộc của nó. Một nỗ lực đã được thực hiện để tải một chương trình với định dạng không chính xác.

Đây là cùng một mã tôi đã kiểm tra trong một thời gian trước đây. Tại sao bây giờ nó làm điều này? Bây giờ tôi cũng thấy một Debug x86 thay vì chỉ Debug trong thư mục bin của dự án xxx đó. Debug x86 là gì và tại sao tôi không có Debug giống như tôi đã từng sử dụng trong thư mục bin?


2
Bạn đã thử làm lại tất cả? Đôi khi, nó khắc phục các sự cố phụ thuộc lạ đối với tôi ...
mezoid

Câu trả lời:


246

Âm thanh giống như một phần của dự án đang được xây dựng chỉ dành cho x86 trong khi phần còn lại đang được xây dựng cho bất kỳ CPU / x64 nào. Cái này cũng cắn tôi. Bạn có đang chạy x64 (hoặc uh ... IA64) không?

Kiểm tra các thuộc tính của dự án và đảm bảo mọi thứ đang được xây dựng cho "Bất kỳ CPU". Nếu bạn đang ở trong Visual Studio, bạn có thể kiểm tra mọi thứ bằng cách vào menu "x86" hoặc "Bất kỳ CPU" nào (bên cạnh menu "Gỡ lỗi" / "Phát hành") trên thanh công cụ ở đầu màn hình và nhấp vào "Quản lý cấu hình..."


1
Nó cũng có tại Project-> Properties-> Build hoặc Debug-> Properties-> Build. Vừa cập nhật VS2015, phiên bản 14.0.25123.00 Cập nhật 2. Bản cập nhật này vừa được phát hành 5/10/16 (ngày hôm qua!). Tôi đã tìm thấy Target Target được đặt thành x64, điều này gây ra lỗi được ghi nhận. Cài đặt thành "Bất kỳ CPU" đã sửa nó.
Michael D. O'Connor

179

Nếu bạn gặp lỗi này khi chạy trang web trong IIS 7+ trên máy chủ 64 bit, bạn có thể có các hội đồng là 32 bit và nhóm ứng dụng của bạn sẽ có tùy chọn "Bật ứng dụng 32 bit" thành Sai; Đặt điều này thành đúng và khởi động lại trang web để làm cho nó hoạt động.


5
@ Mayhem50 Tương tự ở đây. Nó phụ thuộc vào nơi xảy ra lỗi. Nếu thông qua máy chủ web Visual Studio & Cassini, Fraser đúng. Nếu nó xảy ra trong IIS7 +, câu trả lời của Nicks có lẽ là cách khắc phục có khả năng nhất.
Carl Heinrich Hancke

Đây là câu trả lời hoàn hảo cho tôi (đã chuyển một trang web từ IIS6 trên x86 sang IIS 7 trên x64)
DrStalker

Đúng, điều này đã làm nó. Tôi đã chuyển một trang web từ IIS6 trên x86 sang IIS 7 trên x64. Cảm ơn bạn rất nhiều!
Lukas

40

Tôi đã gặp lỗi này khi cố gắng sử dụng Business Object 4 khủng khiếp cho .Net SDK.

Họ gửi năm tệp BusinessObjects *, nhưng tất cả chúng đều là 64 bit.

Để tải trang web của tôi, tôi cần nhấp vào Công cụ \ Tùy chọn , sau đó thay đổi cài đặt này trong VS2013:

nhập mô tả hình ảnh ở đây


Tùy chọn đó không tồn tại với tôi. Tùy chọn duy nhất trên màn hình này đối với tôi trong Visual Studio 2010 là "Sử dụng IIS Express cho các trang web và dự án dựa trên tệp mới"
Drew Chapin

Tôi có tùy chọn này trong VS 2017 Professional
SKCS Kamal

33

inetmgr sau đó đến nhóm Ứng dụng-> Cài đặt nâng cao của nhóm của bạn-> sẽ có tùy chọn "Bật ứng dụng 32 bit" thành đúng; và khởi động lại IIS. kiểm tra lại.!


Thứ hai này. Tôi đã tạo một nhóm ứng dụng mới cho trang web của mình và đã quên chuyển đổi cài đặt này.
AlbatrossCafe

1
Điều này đã sửa nó cho tôi là tốt. Điều khác duy nhất tôi cần thay đổi là thay đổi Đường ống thành tích hợp, vì điều này cũng gây ra lỗi cho tôi sau khi sửa lỗi trên được áp dụng.
AxleWack

7

BadImageFormatException trên một ứng dụng chạy trên IIS (không chạy từ VS, vì studio trực quan khắc phục sự cố bằng cách sử dụng bản dựng cho "Bất kỳ CPU") có thể do các nguyên nhân sau:

Trang web này là một máy chủ có x64 và cài đặt mặc định của Nhóm ứng dụng cho Bật ứng dụng 32 bit là Sai. và bạn có các cụm 32 bit

Ở cấp độ của Visual Studio, cách khắc phục là:

  1. Thay đổi cài đặt dự án "CPU mục tiêu" thành "ANYCPU"

7

Đảm bảo bạn xác minh cài đặt của mình cho "Thích 32-bit". Trong trường hợp của tôi, Visual Studio 2012 đã kiểm tra cài đặt này theo mặc định. Cố gắng sử dụng bất cứ thứ gì từ một DLL bên ngoài đều thất bại cho đến khi tôi bỏ chọn "Thích 32-bit" .

nhập mô tả hình ảnh ở đây


4

Đây chắc chắn là một vấn đề với một số dự án đang được xây dựng để tương thích x86 thay vì bất kỳ CPU nào. Nếu tôi phải đoán tôi sẽ nói rằng một số tài liệu tham khảo giữa các dự án của bạn có thể đang tham chiếu dll trong một số thư mục bin \ debug thay vì là tài liệu tham khảo dự án.

Khi một dự án được biên dịch cho x86 thay vì 'Bất kỳ CPU' nào, dll sẽ đi vào thư mục gỡ lỗi bin \ x86 \ thay vì bin \ debug (có lẽ là nơi mà các tài liệu tham khảo của bạn đang tìm kiếm).

Nhưng trong mọi trường hợp, bạn nên sử dụng tài liệu tham khảo dự án giữa các dự án của bạn.


0

if while Trong studio trực quan với IIS express hoạt động và khi xuất bản không thành công hãy thử điều này:nhập mô tả hình ảnh ở đây

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.