Visual Studio在当前上下文中不存在名称

Jar*_*ett 19 c# visual-studio-2010

我在类上调用静态方法

Foo.bar()
Run Code Online (Sandbox Code Playgroud)

Visual Studio的intellisense为我识别Foo和autocompletes吧(它突出了Foo和类似的一切工作正常).在我构建项目之前,一切看起来都很好,它会抛出一个错误,说当前上下文中不存在名称Foo.

我在其他文件中使用这个静态方法调用,所以我知道该类是正常的.这种情况对于发布代码来说太大了,所以我主要是寻找开始研究的理由,这会导致intellisense正常运行,但会在编译时遇到错误.

ahe*_*rog 29

我在不同的项目中看到了由不同版本的.NET框架引起的这个错误.我构建的类库是4.5,应用程序是4.0,但它唯一的错误是命名空间错误.更改类库上的框架版本并重建它,然后应用程序解决了错误.


ser*_*0ne 9

当名称空间,类和变量具有相同的名称时,会发生这种情况.我以前曾经受过这种痛苦.Intellisense告诉我我是对的,编译告诉我我错了!我信任编译器!

你有两个我能想到的选择

  1. 在你的代码中搜索Foo,并看到它被用于静态类以外的东西.

  2. 完全限定Foo.bar()调用. MyApplication.This.That.Foo.bar();

按顺序执行...最好优雅地解决问题,这样你就可以调用Foo.bar(),因为这比MyApplication.This.That.Foo.bar();整个地方更具可读性和可维护性!

  • 你也可以使用类别名.`使用SuprFoo = MyApplication.This.That.Foo;` (4认同)
  • @JarrodEverett我不确定在没有看到您的来源的情况下我还能提出什么建议.如果您使用多个程序集,它们是否都针对相同的运行时?IE .NET 4.0/.NET客户端配置文件?等等 (4认同)

Meh*_*rad 7

在我的情况下,我}在代码中间的一个方法的末尾错过了一个导致程序看不到代码的其余部分并且抱怨我在那之后定义的方法.