2013-05-20 16 views
15

Tôi biết tôi sẽ hỏi câu hỏi duplicate nhưng kịch bản của tôi hoàn toàn khác vì tôi nghĩ khi tôi đi làm thử nghiệm với công cụ nunit của chương trình của tôi sau đó trong NUnit lỗi này xảy raSystem.BadImageFormatException: Không thể tải tệp hoặc lắp ráp… định dạng không chính xác khi cố gắng cài đặt dịch vụ với installutil.exe

"NewTest.testtest (TestFixtureSetUp): thiết lập: System.BadImageFormatException: không thể tải tập tin hoặc lắp ráp 'AUTO_REPAIR, Version = 1.0.0.0, Culture = trung tính , PublicKeyToken = null 'hoặc một trong những 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 một định dạng không chính xác. "

Tôi tự hỏi tại sao lỗi này xảy ra với công cụ này? tôi chắc chắn tôi không có lỗi trong dự án hoặc trong bất kỳ trường hợp thử nghiệm nào.

Hãy giúp tôi.

đây là hình ảnh của lỗi này

enter image description here

+0

là gì Nếu kịch bản của bạn là khác nhau, sau đó nó không phải là một trùng lặp. – Renan

+2

@Renan tôi sợ chính sách tràn ngăn xếp .... – aami

Trả lời

27

Có hai cách để giải quyết lỗi này

  1. Set nền tảng mục tiêu để x86 cho dự án của bạn trong visual studio (Nhấp chuột phải vào giải pháp của bạn và sau đó đi đến các thuộc tính sau đó bạn sẽ tìm thấy xây dựng lựa chọn và khi bạn bấm về xây dựng, bạn sẽ tìm thấy mục tiêu nền tảng). Sau khi bạn đặt mục tiêu nền tảng thành x86, hãy thử làm bài kiểm tra đơn vị của bạn bằng nunit.

hoặc

  1. Đơn giản chỉ cần tìm hiểu nunit-x86.exe trong thư mục bin của thư mục nunit của bạn và chỉ cần chạy tập tin exe này và bạn sẽ không thấy bất kỳ ngoại lệ một lần nữa :)
+0

Đối với bất kỳ ai khác tình cờ gặp phải điều này - nếu bạn đang sử dụng x64 thì hãy chuyển tất cả các dự án của bạn sang đó, nếu không bạn sẽ tiếp tục gặp sự cố –

+0

DLL được tham chiếu của bạn được đặt thành AnyCPU, bạn chỉ có thể thiết lập dự án thực thi chính (.exe) thành vòm tương ứng. Tôi thấy cách tiếp cận này _much_ dễ dàng hơn để xử lý, vì tất cả những gì bạn cần thay đổi là điểm vào chính (.exe) –

13

BadFormatException xảy ra khi bạn cố gắng để nạp một assembly x86 trong một quá trình 64bit hoặc ngược lại. Theo tài liệu NUnit (http://www.nunit.org/index.php?p=nunit-gui&r=2.4.2) nhân vật mặc định được biên dịch thành AnyCPU, nghĩa là quá trình 64 bit của nó trên máy 64bit. Nếu một trong các hội đồng của bạn hoặc bất kỳ phụ thuộc của nó được biên dịch trực tiếp cho x86, bạn sẽ nhận được ngoại lệ này.

Chuyển sang Nunit-x86 hoặc Nunit-console-x86.exe và mọi thứ sẽ tải chính xác.

11

Để theo dõi nhận xét của Ammar. Đừng chỉ dựa vào những gì Trình quản lý Cấu hình cho bạn biết là nền tảng hoạt động. Vào trang thuộc tính dự án và kiểm tra có quá, đó là nền tảng thực sự cho các dự án

enter image description here

+0

Điều này dẫn tôi đến đúng hướng. Vấn đề của tôi gần như giống nhau, nhưng thực tế là do hộp "Ưu tiên 32 bit" bên dưới Mục tiêu nền tảng đã được kiểm tra theo mặc định. Tôi đã xóa séc đó và nó đã hoạt động! – KangarooWest

+0

Tôi đã có 'AnyCPU' và x64 - trên hệ thống x64.Tôi đã thay đổi cả hai thành 'CPU bất kỳ' và lỗi đã biến mất. Cảm ơn vì sự giúp đỡ. – FrenkyB

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