Tôi có một dịch vụ Windows được viết bằng C # sử dụng Visual Studio 2010 và nhắm mục tiêu .NET Framework 4. Khi tôi chạy từ bản dựng Gỡ lỗi, dịch vụ sẽ chạy như mong đợi. Tuy nhiên, khi tôi chạy nó từ bản phát hành, tôi nhận được System.BadImageFormatException (chi tiết bên dưới). Tôi đã tìm kiếm trên Internet để tìm giải pháp nhưng cho đến nay mọi thứ tôi tìm thấy vẫn chưa giúp tôi tìm ra giải pháp.
Sự cố tồn tại trên cả hệ thống Windows 7 64-bit (nhà phát triển) và Windows XP SP3 32-bit (đích).
Đây là những gì tôi đã thử cho đến nay:
- Tất cả các cài đặt bản dựng đã xác minh như Mục tiêu nền tảng đều giống nhau (x86).
- Đã sử dụng peverify với tùy chọn / verbose để đảm bảo mã nhị phân hợp lệ là hợp lệ.
- Sử dụng fuslogvw để tìm kiếm bất kỳ sự cố tải nào.
- Đã sử dụng CheckAsm để tìm kiếm các tệp hoặc tập hợp bị thiếu.
Tất cả các kiểm tra này không thay đổi bất cứ điều gì. Tôi đã bao gồm toàn bộ văn bản của thông tin ngoại lệ bên dưới, với một số tên đã được thay đổi để bảo vệ bí mật của các chủ công ty của tôi.
System.BadImageFormatException không được xử lý Thông báo = Không thể tải tệp hoặc lắp ráp 'XxxDevices, Phiên bản = 1.0.0.0, Văn hóa = trung lập, PublicKeyToken = null' hoặc một trong các phụ thuộc của nó. Đã cố gắng tải một chương trình có định dạng không chính xác. Nguồn = XxxDevicesService FileName = XxxDevices, Phiên bản = 1.0.0.0, Văn hóa = trung lập, PublicKeyToken = null FusionLog = Trình quản lý lắp ráp được tải từ: C: \ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ clr.dll Chạy trong c: \ Dev \ TeamE \ bin \ Release \ XxxDevicesService.vshost.exe --- Một bản ghi lỗi chi tiết sau đây. === Thông tin trạng thái ràng buộc trước === ĐĂNG NHẬP: Người dùng = XXX ĐĂNG NHẬP: DisplayName = XxxDevices, Phiên bản = 1.0.0.0, Văn hóa = trung lập, PublicKeyToken = null (Được chỉ định đầy đủ) LOG: Appbase = file: /// c: / Dev / TeamE / bin / Release / LOG: Đường dẫn riêng ban đầu = NULL Gọi lắp ráp: XxxDevicesService, Phiên bản = 1.0.0.0, Văn hóa = trung lập, PublicKeyToken = null. === LOG: Liên kết này bắt đầu trong ngữ cảnh tải mặc định. ĐĂNG NHẬP: Sử dụng tệp cấu hình ứng dụng: c: \ TeamE \ bin \ Release \ XxxDevicesService.vshost.exe.Config ĐĂNG NHẬP: Sử dụng tệp cấu hình máy chủ: ĐĂNG NHẬP: Sử dụng tệp cấu hình máy từ C: \ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ config \ machine.config. LOG: Chính sách không được áp dụng cho tham chiếu tại thời điểm này (ràng buộc lắp ráp riêng tư, tùy chỉnh, một phần hoặc dựa trên vị trí). ĐĂNG NHẬP: Đang cố tải xuống tệp URL mới: /// c: /TeamE/bin/Release/XxxDevices.DLL. ERR: Không thể hoàn tất thiết lập lắp ráp (hr = 0x8007000b). Đã kết thúc việc thăm dò. StackTrace: tại XxxDevicesService.Program.Main (String [] args) tại System.AppDomain._nExecuteAssembly (RuntimeAssembly, String [] args) tại Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly () tại System.Threading.ExecutionContext.Run (ExecutionContext thi hànhContext, ContextCallback callback, Object state, Boolean ignoreSyncCtx) tại System.Threading.ExecutionContext.Run (ExecutionContext thực thiContext, ContextCallback callback, Object state) tại System.Threading.ThreadHelper.ThreadStart () Nội ngoại lệ:
XxxDevicesService
gì? Nó có được biên dịch cho một nền tảng cụ thể (ví dụ: 32 bit) không? Nếu vậy, bạn phải biên dịch nền tảng của mình thành 32 bit.