首页 > 解决方案 > 如何使用 UnityContainer Resolve 进行调试?

问题描述

0)如何调试unityContainer?

我正在公司的一个遗留项目上工作,所有项目都是使用 unityContainer 使用依赖注入加载的。我需要对表示层进行改进,但我无法调试代码,只能调试主项目,加载所有模块。

用于加载模块(项目)的代码:

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

在模块上,我注册了所有项目类型,如下所示:

unityContainer.RegisterType< IAboutPage, AboutPage>();

然后我运行主窗体:

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

1)那么有什么方法可以调试加载项目的代码吗?

2)我是否需要进行任何更改才能进行调试?我尝试直接运行表单,但是运行时需要进行大量注入。也许我可以使用另一个允许我调试加载项目的代码的 IoC 框架。

谢谢。

标签: c#visual-studiodebugginginversion-of-controlunity-container

解决方案


调试代码时,Unity 没有什么特别之处。

为了能够逐步完成您需要的代码

  • 与您正在使用的 DLL 匹配的 PDB 文件(通常意味着“在本地重建”,除非 PDB 与 DLL 一起发布)
  • 源代码,最好与用于构建 DLL 的源版本匹配(VS 将允许使用不匹配的源,但是当单步执行与实际发生的情况不匹配时,您可能会获得非常糟糕的体验,因为 PDB 中的行号不再与实际文本来源)
  • 您可能需要禁用“工具->选项->调试->仅我的代码”设置以允许在解决方案之外的代码中单步执行/断点(这取决于VS心情:))

如果您无法获得 PDB,您仍然可以看到异常和调用堆栈(因为此信息是 DLL 元信息的一部分)。

切换到另一个 DI 框架不会对此产生任何影响。


推荐阅读