Ryt*_*mis 7 .net c# debugging clr optimization
我为单元测试编写了一个抽象基类,它为我们的测试运行设置了足够的环境.该类将一些运行时环境位公开为属性,其类型因test而异(属性类型是继承的具体测试类中指定的类型参数).
这一切都很好,除了一位同事发现他无法在调试器中查看任何类的属性.事实证明,他的继承类中没有定义任何字段,并且CLR优化了某些东西,因此调试器无法显示属性.是否有可能以某种方式在基类中阻止这种情况,或者我是否必须告诉每个人他们需要定义至少一个在测试期间某处使用的字段?
编辑:
听起来像一个可能的罪魁祸首应该是优化/调试设置.也就是说,我正在调试模式下从Visual Studio构建应用程序,我已经仔细检查了所有项目都是为调试版本设置的,并且此解决方案中的所有项目都没有设置Optimize标志.
也许有必要注意我正在使用MSTest和Visual Studio测试运行器.
编辑2:
通过"无法查看属性"我指的是当我在Quickwatch中评估属性并获得红色感叹号和文本"无法评估表达式"错误文本时.并且为了避免你认为我完全偏离我的怀疑,添加一个在测试初始化方法中初始化的实例字段会使问题消失......
编辑3:
检查构建输出.我注意到使用以下选项调用编译器:
/debug+
/debug:full
/optimize-
/define:DEBUG,TRACE
Run Code Online (Sandbox Code Playgroud)
我认为这足以阻止这种情况的发生,但是你去了.:)
我以前遇到过同样的问题,而且总是由于Debug模式已经以某种方式关闭了.请尝试检查以下各项:
如果这一切都正确,那么我建议您将写入的文本粘贴到" 输出"窗口,这样我们就可以发现问题的任何不寻常原因.
| 归档时间: |
|
| 查看次数: |
9964 次 |
| 最近记录: |