c# - 如何使用 UnityContainer Resolve 进行调试?
问题描述
0)如何调试unityContainer?
我正在公司的一个遗留项目上工作,所有项目都是使用 unityContainer 使用依赖注入加载的。我需要对表示层进行改进,但我无法调试代码,只能调试主项目,加载所有模块。
用于加载模块(项目)的代码:
unityContainer.RegisterType("FrontEndModule", new InjectionMember[0]);
在模块上,我注册了所有项目类型,如下所示:
unityContainer.RegisterType< IAboutPage, AboutPage>();
然后我运行主窗体:
Application.Run((Form) unityContainer.Resolve< IMainPage >() );
1)那么有什么方法可以调试加载项目的代码吗?
2)我是否需要进行任何更改才能进行调试?我尝试直接运行表单,但是运行时需要进行大量注入。也许我可以使用另一个允许我调试加载项目的代码的 IoC 框架。
谢谢。
解决方案
调试代码时,Unity 没有什么特别之处。
为了能够逐步完成您需要的代码
- 与您正在使用的 DLL 匹配的 PDB 文件(通常意味着“在本地重建”,除非 PDB 与 DLL 一起发布)
- 源代码,最好与用于构建 DLL 的源版本匹配(VS 将允许使用不匹配的源,但是当单步执行与实际发生的情况不匹配时,您可能会获得非常糟糕的体验,因为 PDB 中的行号不再与实际文本来源)
- 您可能需要禁用“工具->选项->调试->仅我的代码”设置以允许在解决方案之外的代码中单步执行/断点(这取决于VS心情:))
如果您无法获得 PDB,您仍然可以看到异常和调用堆栈(因为此信息是 DLL 元信息的一部分)。
切换到另一个 DI 框架不会对此产生任何影响。
推荐阅读
- javascript - 如果使用一个“如果”,我不希望使用其他“如果”。
- java - 从java中的for语句中调用方法
- node.js - “未安装对等依赖项”警告,但已安装
- node.js - 从 id 获取 steam 用户名
- autohotkey - 在 Windows 10 中运行的自动热键脚本问题
- python - scipy:如何使用 weibull_min.pdf?
- r - 在 beta 分布上查找给定 x 值的 y 值
- angular - 使用 Materialize-css 和 Angular Universal | “窗口未定义”错误
- bash - 在 Tcl foreach 循环中运行 sh 脚本
- c# - 有没有办法通过反射来判断自动属性和常规属性之间的区别?