2016-03-31 16 views
10

Trong một dự án WPF (với lăng kính), chúng tôi đang sử dụng Unity làm khung DI.Làm cách nào để gỡ rối độ phân giải Unity?

Gần đây, sau khi chúng tôi hợp nhất hai chi nhánh lớn, chúng tôi không thể khởi động ứng dụng của mình, chúng tôi đã có StackOverflowException. Do tính chất của ngoại lệ, chúng tôi không thể nhận được ngăn xếp cuộc gọi hoặc giá trị hiện tại của họ, chúng tôi chỉ nắm bắt được vấn đề đang đến từ Unity do không gian tên.

Chúng tôi đã dành hơn 5 giờ để tìm được vấn đề này đã xảy ra:

Giản:

Chúng tôi đã có 3-4 dịch vụ (A, B, C và D), mỗi một với một thực hiện và tại một số điểm, dịch vụ A yêu cầu dịch vụ B, yêu cầu dịch vụ C, yêu cầu dịch vụ D, yêu cầu dịch vụ A). Về cơ bản một tham chiếu tuần hoàn.

Chúng tôi muốn biết nếu có bất kỳ khả năng để thêm một số bản ghi rằng Unity đang cố gắng để giải quyết vụ A với việc thực hiện X, và được yêu cầu để giải quyết vụ B, ...

này sẽ giúp chúng tôi rất nhiều để gỡ lỗi vấn đề này, để trực tiếp xem những dịch vụ đã được liên quan trong tham chiếu tuần hoàn này.

Có cách nào để đạt được điều này không?

+0

Không có tracing hoặc đầu ra trong Unity khi giải quyết các loại. Có thể bạn có thể sử dụng Tiện ích mở rộng tùy chỉnh cho Unity mở rộng với hành vi mong muốn của bạn. – Jehof

Trả lời

0

Bạn có thể định cấu hình trình xem nhật ký ràng buộc lắp ráp Fusion Log để giúp chẩn đoán độ phân giải Unity có vấn đề.

Nó được cài đặt với Visual Studio và bạn có thể chỉ cần nhập "fuslogvw" vào dấu nhắc lệnh VS để khởi chạy.

Nếu không, điều này có thể giúp với cấu hình logger: How do I enable assembly bind failure logging (Fusion) in .NET?

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