找不到类型或命名空间.Visual Studio突然要求在使用语句时使用全局前缀

本文关键字:语句 前缀 全局 类型 命名空间 Visual 突然 Studio 找不到 | 更新日期: 2023-09-27 18:28:25

这件事以前发生在我身上,我不知道为什么会发生。

假设您有一个简单的C#类,其中包含一些,在命名空间定义中使用语句。它完美地工作了好几个小时。现在我在一个完全不同的项目上工作,突然之间,前一个项目不再编译了,声称名称空间的一部分已经找不到了。R#建议使用global::…来解决此问题

类型或命名空间名称"Internet"在命名空间"Cmp.Internet.Portal.Web"中不存在(是否缺少程序集引用?)

所以

using Cmp.Internet.Portal.Web.Common;

成为

using global::Cmp.Internet.Portal.Web.Common;

我确实理解这意味着什么,但我对为什么会发生这种事感到困惑。这甚至不应该是必要的。

一个更明显的例子

假设我有3个项目。

  • 项目核心
  • Project.One(参考Project.Core)
  • 和Project.Two(参考Project.Core)

现在Project.One可以在其命名空间中包含using语句,而不使用全局前缀项目。两个不能。为什么?

找不到类型或命名空间.Visual Studio突然要求在使用语句时使用全局前缀

我认为问题的出现是因为不同的程序集提供了相同的名称空间。之所以发生这种情况,是因为我们正在进行重构,并且类在程序集之间移动。

一旦每个命名空间只由一个程序集提供,全局::前缀就变得多余了。