2010-02-15 41 views
20

Tôi đang tìm các mẹo/đề xuất/thông tin chi tiết để giúp gỡ lỗi vấn đề tải ứng dụng; Không thể tải tệp hoặc lắp ráp ...Mẹo để giúp gỡ lỗi "Không thể tải tệp hoặc lắp ráp X hoặc một trong các phụ thuộc của nó"

Giải pháp/dự án mà tôi gặp sự cố này là chuyển đổi từ bản sao làm việc trong Visual Studio 2008 sang Visual Studio 2010 Release Candidate. Quá trình chuyển đổi dường như thành công và tất cả các dự án giải pháp được đặt thành Framework 4.

Ngoại lệ là thành phần bên thứ 3 (thư viện xử lý đồ họa), nhưng mọi câu trả lời đều có thể giúp người khác bằng bất kỳ DLL phiền hà nào.

Không thể tải tệp hoặc lắp ráp 'Aurigma.GraphicsMill.DLL' hoặc một trong các phụ thuộc của nó. không phải là một ứng dụng Win32 hợp lệ. (Ngoại lệ từ HRESULT: 0x800700C1)

Có gì khó hiểu về ngoại lệ này là văn bản bổ sung: không phải là một ứng dụng Win32 hợp lệ.

Các đầy đủ ngoại lệ stack trace là lên trên PasteBin, nhưng dường như không làm sáng tỏ nhiều hơn nữa về vấn đề này ...

Những gì tôi đã cố gắng cho đến nay không có thành công:

  1. Đơn giản sạch sẽ, xây dựng lại, khởi động lại sự kết hợp của Visual Studio 2010 RC.
  2. Xóa và thêm lại DLL được đề cập.
  3. Toggling "sao chép cục bộ" thành true và false trên DLL được đề cập.
  4. Xác nhận rằng sau khi "xây dựng thành công" DLL được đề cập sẽ xuất hiện trong thư mục bin \ debug.
  5. Kiểm tra mọi tham chiếu không cần thiết đối với DLL được đề cập (không tìm thấy).
  6. Tệp giấy phép liên quan cho DLL được đề cập nằm trong cùng thư mục với nó.

Tôi cũng không có may mắn khi nó đánh bất kỳ điểm ngắt trình gỡ lỗi nào khi tải ứng dụng.

Trả lời

6

Tôi có ngoại lệ tương tự khi dự án thực thi của tôi được đặt thành CPU bất kỳ và có tham chiếu đến dll được biên dịch bằng x86.

Thử đặt tệp thi hành của bạn thành x86 và xem nó có hoạt động hay không. Nếu nó không thử fusion log để biết thêm chi tiết về lỗi.

+0

Cảm ơn, nền tảng mục tiêu đã không giúp đỡ, nhật ký kết hợp, không rõ lý do khiến nó không thích báo cáo sự cố tải, nó đã báo cáo các vấn đề khác khi chạy ... –

6

Mẹo

Một cuộc điều tra con đường mà chúng ta đã tiến hành, mà giải quyết một phần của vấn đề của chúng tôi nhưng không phải là vấn đề tổng thể là một kết hợp của x86 (32-bit) và x64 (64-bit) hội tham khảo lẫn nhau .

Đảm bảo bạn không có các hội đồng 32 bit tùy thuộc vào/tham chiếu các cụm bit 64 bit.

30

Tôi đã tìm thấy nguyên nhân của vấn đề này là do bạn đã chuyển sang.net v4, bạn hiện đang sử dụng một hồ bơi ứng dụng mới trong IIS7 cụ thể cho asp.net v4 (bản thân hồ bơi được gọi là 'ASP.NET v4.0')

Trong phần cài đặt nâng cao của nhóm ứng dụng, đặt ' Cho phép các ứng dụng 32 bit trở thành sự thật và vấn đề của bạn DLL giờ đây sẽ tải như mong đợi.

Rõ ràng bạn nên làm tương tự nếu ứng dụng web của bạn có hồ bơi ứng dụng riêng.

Nếu bạn đang sử dụng Windows Server 2008 (không R2) thấy this post on how to assign correct permissions for your application pool identity

0

Thay đổi cài đặt phần tiên tiến của hồ bơi ứng dụng -> thiết lập 'Enable Applications 32-bit' true giải quyết vấn đề của tôi.

2

Điều kỳ lạ là, tôi đang đối mặt với cùng một vấn đề và tôi đặt 'sai' trong các ứng dụng 32 bit cho phép trong cài đặt nâng cao của nhóm ứng dụng và sau đó hoạt động!

3

Điều này là do bạn đang cố tải phụ thuộc nhị phân (một trong các tệp trong thư mục Bin) của bạn là 32 bit và ứng dụng của bạn đang chạy ở chế độ 64 bit.

Trong .Net 4 và IIS 7, các ứng dụng mặc định chạy ở chế độ 64 bit.

Hầu hết các tệp nhị phân Net được biên dịch với Any CPU được đặt trong thuộc tính xây dựng của nó. Điều này có nghĩa là chúng hoạt động ở chế độ 32 và 64 bit.

Hầu hết các ứng dụng C++ và C được viết bằng .Net do yêu cầu được biên dịch cụ thể cho 32 bit hoặc 64 bit. Điều này có nghĩa là nếu bạn đang sử dụng phiên bản được triển khai sai của bạn, bạn không thể tải nó.

Điều này có thể được giải quyết sử dụng trên các nội dung sau:

nếu bạn muốn giữ tài liệu tham khảo 32bit của bạn/phụ thuộc:

  1. Cụ thể đặt ứng dụng IIS để chạy trong chế độ 32bit.
    • Trong quản lý IIS;
    • Hồ bơi ứng dụng -> Cài đặt nâng cao (ở bên phải)
    • "Các ứng dụng 32 bit được bật" được đặt thành True.
    • Khởi động lại hồ bơi ứng dụng của bạn
  2. Cài đặt cả hai hội đồng của bạn (32bit và 64bit) trong GAC. IIS sẽ tải phiên bản chính xác tùy thuộc vào môi trường hoạt động (trong trường hợp của bạn, đây là phiên bản 64 bit).

Nếu bạn chỉ muốn có được nó làm việc:

  1. Thay yout 32bit nhị phân trong thư mục Bin của bạn với 64bit một. IIS sẽ không gặp sự cố khi tải nó.
0

Kiểm tra xem DLL có bị chặn không. Nhấp chuột phải vào Dll> Properties> UnBlock.

Các vấn đề liên quan