命名空间中不存在类型或命名空间名称 - 但命名空间确实存在

问题描述 投票:0回答:5

我已经工作了很长时间没有任何问题的项目突然开始抛出诸如

之类的错误
The type or namespace name 'xxx' does not exist in the namespace 'yyy' (are you missing an assembly reference)?

在本例中,命名空间都是核心 .Net 库,例如我一直在使用的

System.Data
Linq
IO
,没有任何问题。

我已经解决了this问题中的所有问题,例如确保工作区中的所有项目都使用相同版本的.Net进行目标框架设置。

我删除了所有有问题的库并重新添加它们,但问题仍然存在。我怀疑它们的库本身已损坏,因为我在解决方案中的其他项目中引用了它们。

c# visual-studio visual-studio-2012 tfs
5个回答
4
投票

回滚使用 TFS 的工作后,我设法找出导致此错误的原因:我在项目中添加了一个名为“System”的文件夹,并在其中放入了一个类文件。

这是一个很容易重现的问题:创建一个项目,向其中添加一个名为 system 的文件夹(此时它仍会编译),然后在其中创建一个 .cs 文件,这时就会发生所有有趣的错误。

问题源于“System”文件夹的名称,这导致在其中创建的任何文件都位于命名空间“.System”下。

我可以理解为什么现在有一个名为“System”的文件夹/命名空间会导致问题,但我认为如果 Visual Studio 在创建此类名称的文件夹/命名空间时发出警告以首先阻止此问题发生,将会有所帮助。我已经用 MS 记录了一个错误,至少记录下来可能会帮助任何其他犯过与我相同错误的人!


0
投票

我的系统意外关闭后也遇到了同样的问题,即使 VS 尝试恢复,问题仍然出现。

我的解决方案资源管理器中有两个项目。为了解决这个问题,我右键单击与错误消息关联的项目并选择“构建”。

之后问题就解决了。

补充一下,在我添加了对其他“项目”中的“项目”的引用后,问题得到了永久解决。


0
投票

我将引用的文件的命名空间从 myproject.shared.constants 重命名为 myproject.SOMETHING.shared.constants

之后它建议“使用 myproject.SOMETHING.shared.constants”作为建议。我将其重命名回 myproject.shared.constants 然后它就工作了。


0
投票

尝试清理然后重建 dll 文件。我遇到了同样的问题,尝试了互联网上的不同建议,但都不起作用。但它会。如果您不知道如何执行以下步骤:

  1. 打开您的 dll 项目文件。 2.单击解决方案资源管理器,右键单击您的 Dll 项目名称,您将找到清理和重建选项。

0
投票

就我而言,我只是在 using 语句中设置别名。 像这样

using aliasName = yyy.xxx;
然后只需使用 aliasName.something 就可以了! 对我来说,我有多个嵌套文件夹,所以编译器可能会感到困惑 xD

© www.soinside.com 2019 - 2024. All rights reserved.