命名空间中不存在类型或命名空间名称 - 但命名空间确实存在
本文关键字:命名空间 存在 不存在 类型 | 更新日期: 2023-09-27 18:31:00
一个我已经工作了很长时间而没有任何问题的项目突然开始抛出错误,例如
The type or namespace name 'xxx' does not exist in the namespace 'yyy' (are you missing an assembly reference)?
在这种情况下,命名空间都是我一直在使用的核心 .Net 库,例如 System.Data
、Linq
和 IO
,没有任何问题。
我已经解决了这个问题中的所有问题,例如确保工作区中的所有项目都对目标框架设置使用相同的 .Net 版本。
我删除了所有有问题的库并重新添加了它们,但问题仍然存在。我怀疑它们的库本身已损坏,因为我在解决方案中的其他项目中引用了它们。
在回滚我使用 TFS 的工作后,我设法弄清楚了我做了什么导致了这个错误:我在项目中添加了一个名为"System"的文件夹,并在其中放置了一个类文件。
这是一个很容易重现的问题:创建一个项目,向其添加一个名为 system 的文件夹(此时它仍将编译),然后在其中创建一个.cs文件,那时所有有趣的错误都会发生。
问题源于"系统"文件夹的名称,该名称导致在其中创建的任何文件都在命名空间下"。系统"。
我可以理解为什么现在拥有一个名为"System"的文件夹/命名空间会导致问题,但我认为如果 Visual Studio 在创建此类名称的文件夹/命名空间时发出警告以阻止此问题首先发生,这将有所帮助。我已经用 MS 记录了一个错误,至少记录这个错误可能会帮助任何其他犯过与我同样错误的人!
在我的系统意外关闭后,我遇到了同样的问题,即使 VS 试图恢复,问题也弹出了。
我的解决方案资源管理器中有两个项目。为了解决这个问题,我右键单击与错误消息关联的项目并选择"构建"。
之后,问题得到解决。
补充一点,在我从另一个"项目"添加对"项目"的引用后,问题已永久解决。
我将引用的文件的命名空间从myproject.shared.constants重命名为myproject。SOMETHING.shared.constants
之后,它建议"使用myproject。SOMETHING.shared.constants"作为建议。我把它重命名回myproject.shared.constants,然后它就工作了。
尝试清理,然后重建 dll 文件。我遇到了同样的问题,尝试了互联网上的不同建议,但没有一个有效。但它会的。如果您不知道如何操作,请按照以下步骤操作:
- 打开 DLL 项目文件。2.单击解决方案资源管理器右键单击您的 Dll 项目名称,您将找到清理和重建选项。
就我而言,我只是在 using 语句中设置别名。
喜欢这个:
using aliasName = yyy.xxx;
然后只需使用aliasName.something
它就起作用了!
对我来说,我有多个嵌套文件夹,所以编译器可能感到困惑。