【问题标题】:Extension methods not working in Visual Studio (Immediate/Watch windows)扩展方法在 Visual Studio 中不起作用(立即/监视窗口)
【发布时间】:2015-07-20 22:16:16
【问题描述】:

当我尝试在即时或监视窗口中使用扩展方法时,我收到以下错误:

{method} 不是 {class} 的成员

我正在使用 Visual Studio Community 2013 Update 4,但这里的多台 PC 上存在问题,运行不同版本的 Visual Studio 2013 和 2015。

扩展方法是来自 .NET BCL 还是在我们的项目中定义并没有区别。代码本身编译运行成功;问题仅在“立即”和“观察”中。

我尝试将所有项目设置为框架 4.5.1,并使用 x86 配置,但没有结果。

在代码文件的开头添加Imports System.Linq 没有任何区别(这是有道理的,因为System.Linq 已经全局导入(项目属性 -> 引用 -> 导入的命名空间)。

还能做什么?

【问题讨论】:

  • 参考以下问题:stackoverflow.com/questions/8850286/…问候
  • 很抱歉省略了该链接。是的,我看过那个页面,唯一的想法是添加一个 using/imports。这没有帮助。我编辑了我的问题以表明这一点。还有其他想法吗?
  • @SimonMattes 这个问题似乎与我们所有项目之间共享的类库中的一些冲突有关。当我创建一个没有共享库的新项目时,我没有这个问题。此外,当我添加共享库的已编译 DLL 作为对新项目的引用时,我也没有问题。

标签: visual-studio extension-methods watch-window


【解决方案1】:

在未导入 System.Linq 的任何上下文中,您都可以将扩展方法调用为普通静态方法。例如,在 QuickWatch 窗口(actualVariables 是一个列表)中,以下内容对我不起作用:

actualVariables.Select(x=>x.Identity.DisplayName)

改成这个形式就可以了:

System.Linq.Enumerable.Select(actualVariables,x=>x.Identity.DisplayName)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多