Как отлаживать с помощью UnityContainer Resolve? - PullRequest
0 голосов
/ 10 февраля 2019

0) Как отлаживать unityContainer?

Я работаю над устаревшим проектом в фирме, и все проекты загружаются с использованием внедрения зависимостей с помощью unityContainer.Мне нужно внести улучшения на уровне представления, но я не могу отладить код, только основной проект, который загрузил все модули.

Код, используемый для загрузки модулей (проектов):

unityContainer.RegisterType("FrontEndModule", new InjectionMember[0]);

В модуле я регистрирую все типы проектов следующим образом:

unityContainer.RegisterType< IAboutPage, AboutPage>();

И затем запускаю основную форму:

Application.Run((Form) unityContainer.Resolve< IMainPage >() );

1) Есть ли способ отладки кода загруженных проектов?

2) Нужно ли вносить какие-либо изменения, чтобы иметь возможность отладки?Я пытался запустить форму напрямую, но потом нужно сделать много инъекций.Возможно, я смогу использовать другую платформу IoC, которая позволит мне отлаживать код загруженных проектов.

Спасибо.

1 Ответ

0 голосов
/ 10 февраля 2019

В Unity нет ничего особенного, когда вы отлаживаете код.

Чтобы иметь возможность пошагово выполнять код, который вам необходим

  • Файлы PDB, соответствующие используемым вами DLL (частоэто означает «перестроить локально», если PDB не опубликован вместе с DLL)
  • исходный код, предпочтительно совпадающий с версией источника, используемого для создания DLL (VS позволит использовать несовпадающие источники, но вы, вероятно, получите очень плохоеопыт при переходе не совпадает с тем, что происходит на самом деле, поскольку номера строк в PDB больше не совпадают с фактическим источником текста)
  • вам может потребоваться отключить настройку «Инструменты-> Параметры-> Отладка-> Мой код только» дляразрешить проходить / прерывать точки в коде вне решения (это зависит от настроения VS :))

Если вы не можете получить PDB, вы все равно можете видеть исключения и стеки вызовов (так как эта информация является частьюDLL metainfo).

Переключение на другую инфраструктуру DI не окажет на это никакого влияния.

...