如何使用UnityContainer Resolve进行调试?

时间:2019-02-09 22:15:37

标签: c# visual-studio debugging inversion-of-control unity-container

0)如何调试unityContainer?

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

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

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

在模块上,我注册所有这样的项目类型:

unityContainer.RegisterType< IAboutPage, AboutPage>();

然后我运行主表单:

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

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

2)我需要进行任何更改才能调试吗? 我尝试直接运行该表单,但随后需要运行许多注入。也许我可以使用另一个IoC框架,使我可以调试已加载项目的代码。

谢谢。

1 个答案:

答案 0 :(得分:1)

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

要逐步完成所需的代码

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

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

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