我能否阻止优化掉调试信息的CLR?(Can I prevent the CLR from optim

2019-09-17 07:24发布

我已经写单元测试的抽象基类,设置我们的测试,仅运行足够的环境。 类暴露了一些运行时环境比特作为其类型变化测试通过测试(该属性类型是在继承,混凝土测试类指定类型的参数)的属性。

这是一切都很好,除了一个同事发现他无法查看任何调试器中的类的属性。 原来,原因是他没有在他的继承类定义的字段,以及CLR优化或其他东西了,所以调试器无法显示属性。 是否有可能阻止这种在基类不知何故,还是我不得不求助于告诉大家,他们需要定义它在测试中的某处使用至少一种场?

编辑:

听起来像一个可能的罪魁祸首应该是优化/调试设置。 这就是说,我建立从Visual Studio在调试模式下的应用程序,我仔细检查了所有项目的调试版本设置,并没有在该解决方案中的项目有优化标志设置。

也许这也将是相关的注意,我使用MSTest的和Visual Studio的测试运行。

编辑2:

通过“无法查看属性”我指的是,当我评价快速监视的财产,并得到一个红色的感叹号和一个文本“无法计算表达式”错误文本。 且怕你觉得我有我的怀疑完全关闭基地,并表示被测试初始化​​实例字段初始化方法使问题消失...

编辑3:

经过编译输出。 我注意到,编译器调用这些选项:

/debug+
/debug:full
/optimize-
/define:DEBUG,TRACE

我认为这是足以阻止这种情况发生,但你去那里。 :)

Answer 1:

我以前也遇到过同样的问题,这是由于不可避免的事实,调试模式已经以某种方式被关闭。 请检查以下每一项:

  1. 用于溶液,并且适当调整项目(多个)当前生成配置是调试
  2. 在属性页的Build选项卡中, 优化代码复选框取消选中

如果这是正确的,那么我建议你粘贴写入到输出窗口,在这里可以使我们有可能发现这一问题的任何更不寻常的原因文本。



Answer 2:

确保您的ARENT试图调试发布版本。 所有这些编译设置这些配置背后设置。 调试版本是一个用于调试;-)



文章来源: Can I prevent the CLR from optimizing away debugging information?