2013-04-12 33 views
9

Tôi nhận được lỗi sau, không liên tục:nhập nhằng Lỗi Reference

Không thể tải tập tin hoặc lắp ráp 'com.mycompany.myapp' hoặc một trong các phụ thuộc của nó. Tệp kê khai của assembly được đặt không khớp với tham chiếu assembly .

Tôi có thư viện các điều khiển người dùng Ajax mà tôi đã tạo và biên dịch thành một DLL. Dự án này có một tham chiếu đến Project A (com.mycompany.myapp). Ứng dụng web chính của tôi có một tham chiếu đến DLL này và cũng có một tham chiếu đến Project A. Thỉnh thoảng, lỗi này sẽ xảy ra khi tôi cố gắng xây dựng lại ứng dụng web của mình. Dường như các tham chiếu đến Project A đang không đồng bộ giữa DLL và ứng dụng web.

Điều này chỉ có thể được sửa bằng cách xây dựng lại DLL, loại bỏ tham chiếu đến DLL từ ứng dụng web, thêm lại tham chiếu và sau đó xây dựng lại ứng dụng web. Bất cứ ai có thể giải thích tại sao điều này xảy ra và làm thế nào để ngăn chặn lỗi này từ cắt xén?

Tôi đang tìm một giải pháp cho phép giải quyết vấn đề này để tôi có thể phân phối tệp DLL này mà không cần lo lắng rằng nó sẽ cần phải được xây dựng lại và triển khai không liên tục.

+0

Hãy thử tải lại bản lắp ráp, xóa nó khỏi tài liệu tham khảo và thêm lại. Điều này sẽ giải quyết nó. – IWIH

Trả lời

1

Nếu bạn có tất cả các dự án của bạn trong cùng một giải pháp, bạn cần đảm bảo rằng tất cả đều là tham chiếu dự án và không tham chiếu tệp. Bạn có thể kiểm tra điều này bằng cách kích chuột phải vào dự án và đi đến properties => references.

Trong danh sách tham chiếu của bạn, bạn sẽ thấy cột có tên "bản sao cục bộ". Nếu điều này được thiết lập để thiết lập để sai nó có nghĩa là bạn đang tham khảo nó bằng tập tin thay vì dự án (mà không cập nhật các DLL sau khi bạn xây dựng nó). Để giải quyết nó, loại bỏ các tham chiếu và thêm nó một lần nữa (chắc chắn rằng bạn tham khảo nó từ giải pháp của bạn, không phải bằng cách tham khảo các DLL trên ổ cứng của bạn).

Nếu bạn không có tất cả các dự án trong cùng một giải pháp, thì đây là hành vi bình thường. Giả sử thư viện điều khiển Ajax của bạn nằm ngoài giải pháp.

Tình hình bắt đầu sẽ là một cái gì đó như thế này:

  • Ajax tham chiếu A (phiên bản 1)
  • Dự án tham chiếu A (phiên bản 1)
  • Dự án tham chiếu Ajax (phiên bản 1)

Sau khi bạn xây dựng giải pháp của mình (không có dự án Ajax bên trong nó), bạn sẽ có tình huống sau:

  • Ajax tham chiếu A (phiên bản 1)
  • Dự án tham chiếu A (phiên bản 2)
  • Dự án tham chiếu Ajax (phiên bản 1)

Như bạn thấy, trình biên dịch đột nhiên cần một tham chiếu đến A phiên bản 1 và phiên bản 2, vì vậy điều đó là không thể và nó sẽ cho bạn một lỗi. Điều này cũng sẽ giải thích lý do tại sao nó hoạt động khi bạn làm một xây dựng lại và xóa các DLL và thêm nó một lần nữa.

Giải pháp ở đây là thêm dự án Ajax vào giải pháp của bạn và xây dựng lại nó mỗi lần.

1

Điều này có thể giúp bạn .. Tôi có cùng một vấn đề trước đây, những gì tôi đã làm, tôi đã xóa các tập tin trong thư mục bin sau đó xây dựng lại các ứng dụng sau đó thêm dự án khác trong dự án chính sau đó xây dựng lại cả hai.

"Could not load file or assembly" error but I don't know which project is referencing this assembly with old number

+0

Cảm ơn bạn đã phản hồi nhưng điều này không hiệu quả – jason

1

Kiểm tra xem cụm từ "com.mycompany.myapp" của bạn không có thuộc tính AssemblyVersion trong tệp AssemblyInfo.cs hoặc phiên bản không có dấu sao dẫn đến tự động tạo phiên bản.

Chỉ là một ý nghĩ.

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