获取"无法找到类型或命名空间名称",但一切似乎都可以吗?

Gre*_*reg 258 c# namespaces directive reference visual-studio

我得到了:

找不到类型或命名空间名称

VS2010中的C#WPF应用程序出错.这段代码编译得很好,但突然间我收到了这个错误.我已经尝试删除项目参考和using声明,关闭VS2010并重新启动,但我仍然有这个问题.

任何想法为什么会发生这种情况,看起来我正在做正确的事情参考和using陈述?

我还在VS2010中注意到该命名空间的intellisense工作正常,所以看起来VS2010有项目引用并且一方面看到命名空间,但是在编译期间看不到它?

slu*_*ter 455

这可能是两个项目之间.Net框架版本不兼容的结果.

它可以通过两种方式实现:

  1. 引用完整框架项目的客户端配置文件项目; 要么
  2. 针对较新框架版本的较旧框架版本

例如,当应用程序设置为以.Net 4 Client Profile框架为目标,并且它引用的项目以完整的.Net 4框架为目标时,就会发生这种情况.

所以要更清楚:

  • 项目A面向客户端配置文件框架
  • 项目A参考项目B.
  • 项目B以完整框架为目标

在这种情况下,解决方案是升级应用程序的框架目标(项目A),或降级引用程序集的目标(项目B).完整框架应用程序可以引用/使用客户端配置文件框架程序集,但不是相反(客户端配置文件不能引用完整框架目标程序集).

请注意,在VS2012或VS2013(使用.Net 4.5作为默认框架)中创建新项目时,也会出现此错误,并且:

  • 引用项目使用.Net 4.0(当您从VS2010迁移到VS2012或VS2013然后添加新项目时,这很常见)

  • 引用的项目使用更大的版本,即4.5.1或4.5.3(您已将现有项目重新定位到最新版本,但VS仍然创建针对v4.5的新项目,然后您引用这些旧项目来自新项目)

  • 如果Visual Studio会给你一些关于此的暗示,真的会很好! (17认同)
  • 虽然这个答案很好地描述了需要做什么......它没有关于如何做的建议,这将是一个很好的补充 (4认同)
  • 优秀 - 这工作 - 我不得不升级我的WPF应用程序客户端以使用完整的.NET Framework 4.不确定这将对客户端足迹产生什么影响?我确实尝试将我所拥有的库降级到.Net 4 Client Profile但是当我这样做时,它与我刚刚开始使用的最近的Quartz.net第三方库有类似的问题.因此,在我的库项目中使用Quartz.net似乎最终迫使我必须在我的UI WPF应用程序中使用完整的.Net 4框架. (2认同)
  • 谢谢 - 这刚刚帮助了.我最近将解决方案从VS2010移到VS2012,并在VS2012中创建了一个新的类库.突然之间我遇到了这个错误,当然这是因为新的类库以.NET 4.5为目标,而引用它的项目则以.NET 4.0为目标.将新库降级到目标4.0修复它. (2认同)

小智 44

重新安装nuget包对我来说很有用.在我将.NET Framework版本更改为同步所有项目之后,仍然为以前的版本安装了一些nuget包(尤其是Entity Framework).Packages Manager Console中的此命令将重新安装整个解决方案的包:

Update-Package –reinstall
Run Code Online (Sandbox Code Playgroud)

  • 这也对我有用。运行命令,然后取消所产生的挂起更改,我的 sln 恢复正常 (2认同)

Ale*_*øst 29

我不知道为什么会这样,但我删除了VS2015告诉我它无法找到的项目参考,并再次添加.解决了这个问题.我试过清洁,建立和重新启动VS无济于事.


ksu*_*sun 28

在构建解决方案时,我遇到了同样的错误(无法找到类型或名称空间').在它下面我看到一个警告,指出"无法解析引用"并确保"程序集存在于磁盘上".

我很困惑,因为我的DLL非常清楚地位于引用指向的位置.在我尝试构建解决方案之前,VS似乎没有强调任何错误.

我终于意识到了问题(或者至少我怀疑是问题).我在同一个解决方案中构建库文件.因此即使它存在于磁盘上,它也在该位置重建(在某个过程中,库重建我的其他项目 - 在同一个解决方案中 - 引用库必须已经确定库不存在)

当我右键单击项目并仅构建它时,而不是整个解决方案,我没有得到错误.

为了解决这个问题,我将库添加为正在使用它的项目的依赖项.

去做这个:

  1. 我在解决方案资源管理器中右键单击了我的解决方案并选择了"属性"
  2. 然后在"Common Properties"中选择"Project Dependencies".
  3. 然后在Projects下拉菜单中,我选择了依赖库的项目,和
  4. 选中"Depends On"下的库旁边的复选框

这可确保首先构建库项目.

  • 感谢您提示查看警告.我的问题是我的测试项目需要为Bcl安装NuGet包,因为我的主项目正在引用它. (2认同)

Gre*_*g D 7

首先,我将验证您的项目生成的信息是否已损坏.对解决方案进行清理和重建.

如果这没有帮助,我过去看到的有关设计师问题的一件事就是打开一个Windows窗体项目,然后再关闭它.不过,这是一个小小的内脏,所以不要屏住呼吸.


yu *_*ian 6

在我的例子中,我发现 VisualStudio 中的参考有一个三角形,还有一个感叹号作为这个图像,

然后,我右键删除它,并再次正确添加dll引用,问题解决了。


Kim*_*Kim 5

我遇到的一个棘手的情况是:项目一目标是Microsoft.Bcl.Async安装了包的4.0完整框架.项目二针对4.0完整框架,但在引用Project一个类时不会编译.

一旦我在第二个项目上安装了Async NuGet包,它编译得很好.


Ili*_*sov 5

我遇到了类似的问题:编译器无法检测到同一项目中的文件夹,因此链接到该文件夹​​的 using 指令生成了错误。就我而言,问题源于重命名文件夹. 即使我更新了该文件夹内所有类的命名空间,项目信息还是无法更新。我尝试了一切:删除 .suo 文件以及 bin 和 obj 文件夹,清理解决方案,重新加载项目 - 没有任何帮助。我通过删除文件夹和里面的类,创建一个新文件夹并在该新文件夹中创建新类来解决这个问题(简单地将类移动到新文件夹中没有帮助)。

PS:就我而言,我正在开发一个 Web 应用程序,但是这个问题可能会出现在不同类型的项目中。