诊断DebuggerTypeProxy属性不起作用的原因

时间:2010-08-02 06:04:46

标签: .net visual-studio visual-studio-2008 debugging

我试图通过添加DebuggerTypeProxy属性来调试COM对象的包装器更容易 - 该属性似乎在某些时候工作(当运行单元测试等...时) ,但是当我实际调试目标进程时我不知道为什么:

  • 我已经检查过以确保在模块窗口中加载了正确的程序集,甚至反汇编程序集以确保它正确并具有正确的属性等...
  • 我已经尝试将我的调试代理类公开,但这没有任何区别。
  • 我在调试外部进程时在立即窗口中使用了反射,并看到我定义的属性看起来是正确的。

在其上定义了DebuggerTypeProxy属性的其他类(在同一个程序集中)似乎工作正常 - 我只是无法弄清楚为什么

  • 我的DebuggerTypeProxy属性在目标进程中不起作用还有其他原因吗?
  • 是否有其他方法可以调试/排除属性无效的原因?

5 个答案:

答案 0 :(得分:2)

我遇到了同样的问题,发现答案是在工具>中取消选中“在变量窗口中显示对象的原始结构”。选项>调试>一般设置。

答案 1 :(得分:1)

鉴于您正在使用Visual Studio 2010,我怀疑嵌入互操作类型功能是否会导致此问题。尝试关闭嵌入互操作类型并重复您的解决方案。

  • 转到解决方案资源管理器中的“参考”项目
  • 选择每个参考
  • 打开属性网格
  • 将“嵌入互操作类型”更改为false
  • 重建

然后重复你的情景。

答案 2 :(得分:1)

在Asp.net应用程序中,问题在于代码访问安全性。 当应用程序以完全信任运行时,一切正常。 部分信任 - DebuggerTypeProxy属性不起作用

答案 3 :(得分:0)

我也偶然发现了这个问题。

DebuggerTypeProxy在Medium Trust中无法正常工作。

通过将DebuggerTypeProxy类从私有嵌套类(在它是调试器代理的容器类中)移动到直接在命名空间(而不是嵌套)下的内部类来解决问题。

以防万一其他人也遇到同样的问题。

答案 4 :(得分:0)

应在工具选项调试常规<中取消选中

使用托管兼容模式 /强>