c# - Visual Studio 调试器不会加载文件名中带有 `(反引号)的文件中的符号。谁能解释一下?

标签 c# visual-studio debugging

我正在调试 Visual Studio 2005 中的一些代码,这时我注意到 IDE 没有在特定的通用类中遇到断点。我可以手动进入类(class),但是将鼠标悬停在引用上时显示的工具提示仅包含内存地址,而不是正常的友好工具提示。

原来问题出在文件名(!)上。具体来说,当文件名包含`(反引号、反引号)时,调试器将不会加载该文件的符号。解决方法是重命名该文件。

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

  • Foo.cs 包含非泛型类型(例如 Foo)
  • Foo`1.cs 包含具有单个类型参数的泛型类型(例如 Foo)
  • Foo`2.cs 包含一个具有两个类型参数的泛型(例如 Foo)

此错误(是吗?)也出现在 Visual Studio 2008 中。

谁能解释这种行为?

最佳答案

我的印象是,在幕后,泛型类型被编译成名称中带有反引号的类型。假设你有 List<int>List<string> ,在幕后你有两个类(class)。一个是 System.Collections.Generic.List'1和另一个System.Collections.Generic.List'2 .这些类可能会生成并存储在同名文件中(扩展名为 .cs)。

我猜如果你在你的文件名中加上反引号,你会搞乱这个机制。

由于我还没有研究过,所以我在这里有点推测,但它可能是您要研究的东西? :)

祝你好运

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

关于c# - Visual Studio 调试器不会加载文件名中带有 `(反引号)的文件中的符号。谁能解释一下?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/505447/

相关文章:

.net - Visual Studio 2017 v15.5.0 中的 F# 项目类型

visual-studio - DevExpress ToolboxAnalyzer 声称即使修复后也没有引用信息

c++ - 扫描一个字符串,(在发布和 Debug模式下产生不同的值)

c# - 如何获得对象或结构列表中项目的不同值?

c# - 如何丢弃文件之间的 Git 更改

visual-studio - Framework 4.6.2 在 Visual Studio 2015 中不可用?

javascript - 如何json输出整个范围?

javascript - 如何在 asp.net mvc 中重复表单控件并将它们作为列表传递给 Controller

c# - 使用 IEnumerator 和使用数组作为属性之间的区别

c# - 在 C# Tcp 服务器中调试可能孤立的套接字