Как отлаживать разрешение Unity?

В проекте WPF (с призмой) мы используем Unity как инфраструктуру DI.

Недавно, после объединения двух больших ветвей, мы не смогли запустить наше приложение, у нас был StackOverflowException. Из-за характера исключения мы не смогли получить его стек вызовов или текущие значения, мы только установили, что проблема исходила из Unity из-за пространства имен.

Мы потратили более 5 часов, чтобы выяснить, возникла ли проблема:

Упрощенная:

У нас было 3-4 службы (A, B, C и D), каждая из которых имела реализацию, и в какой-то момент службе A требовалась услуга B, которой требовалась служба C, которая требовала услуга D, требующая обслуживания A). В основном циклическая ссылка.

Мы хотели бы знать, есть ли возможность добавить некоторые журналы, которые Unity пытается решить службу A с реализацией X и требует разрешения службы B,...

Это очень помогло бы нам отладить эту проблему, чтобы напрямую увидеть, какие службы были вовлечены в эту циклическую ссылку.

В любом случае, чтобы достичь этого?

Ответ 1

Вы можете настроить просмотр журнала привязки сборки Журнал Fusion, чтобы помочь диагностировать проблемные разрешения Unity.

Он установлен с Visual Studio, и вы можете просто ввести "fuslogvw" в командную строку VS для запуска.

В противном случае это может помочь в настройке регистратора: Как включить ведение журнала сбоев привязки сборки (Fusion) в .NET?