Как отлаживать разрешение 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?