我已经工作了很长时间没有任何问题的项目突然开始抛出诸如
之类的错误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进行目标框架设置。
我删除了所有有问题的库并重新添加它们,但问题仍然存在。我怀疑它们的库本身已损坏,因为我在解决方案中的其他项目中引用了它们。
回滚使用 TFS 的工作后,我设法找出导致此错误的原因:我在项目中添加了一个名为“System”的文件夹,并在其中放入了一个类文件。
这是一个很容易重现的问题:创建一个项目,向其中添加一个名为 system 的文件夹(此时它仍会编译),然后在其中创建一个 .cs 文件,这时就会发生所有有趣的错误。
问题源于“System”文件夹的名称,这导致在其中创建的任何文件都位于命名空间“.System”下。
我可以理解为什么现在有一个名为“System”的文件夹/命名空间会导致问题,但我认为如果 Visual Studio 在创建此类名称的文件夹/命名空间时发出警告以首先阻止此问题发生,将会有所帮助。我已经用 MS 记录了一个错误,至少记录下来可能会帮助任何其他犯过与我相同错误的人!
我的系统意外关闭后也遇到了同样的问题,即使 VS 尝试恢复,问题仍然出现。
我的解决方案资源管理器中有两个项目。为了解决这个问题,我右键单击与错误消息关联的项目并选择“构建”。
之后问题就解决了。
补充一下,在我添加了对其他“项目”中的“项目”的引用后,问题得到了永久解决。
我将引用的文件的命名空间从 myproject.shared.constants 重命名为 myproject.SOMETHING.shared.constants
之后它建议“使用 myproject.SOMETHING.shared.constants”作为建议。我将其重命名回 myproject.shared.constants 然后它就工作了。
尝试清理然后重建 dll 文件。我遇到了同样的问题,尝试了互联网上的不同建议,但都不起作用。但它会。如果您不知道如何执行以下步骤:
就我而言,我只是在 using 语句中设置别名。 像这样
using aliasName = yyy.xxx;
然后只需使用 aliasName.something 就可以了!
对我来说,我有多个嵌套文件夹,所以编译器可能会感到困惑 xD