Visual Studio调试器不会在文件名中带有"(反引号)"的文件中加载符号.有谁能解释一下?

Dav*_*ave 4 c# debugging visual-studio

我在Visual Studio 2005中调试了一些代码,当时我注意到IDE没有在特定的泛型类中遇到断点.我可以手动进入该类,但悬停在引用上时显示的工具提示只包含内存地址而不是普通的友好工具提示.

事实证明,问题是由文件名(!)引起的.具体来说,当文件名包含`(反引号,反引号)时,调试器将不会加载该文件的符号.解决方法是重命名该文件.

我首先使用反引号来表示泛型类型的基数:

  • Foo.cs包含非泛型类型(例如Foo)
  • Foo`1.cs包含一个带有单个类型参数的泛型类型(例如Foo <T>)
  • Foo`2.cs包含一个带有两个类型参数的泛型(例如Foo <T,U>)

这个错误(是吗?)也发生在Visual Studio 2008中.

谁能解释这种行为?

OJ.*_*OJ. 5

我的印象是,在幕后,泛型类型被编译成在其名称中具有反引号的类型.说你有,List<int>并且List<string>在幕后你有两节课.一个会是System.Collections.Generic.List'1另一个System.Collections.Generic.List'2.可以生成这些类并将其存储在同名文件中(扩展名为.cs).

我猜你如果你在你的文件名中添加反引号,你就会搞乱这种机制.

我在这里猜测一下,因为我没有研究它,但它可能是你研究的东西?:)

祝好运

编辑 - 不得不使用撇号而不是反引号,因为它们是这个编辑器中的保留符号:)