0

它以前发生在我身上,我永远不知道为什么会这样。

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

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

所以

using Cmp.Internet.Portal.Web.Common;

变成

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

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

一个让它更明显的例子......

假设我有 3 个项目。

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

现在Project.One可以在其命名空间内使用 using 语句,而无需使用全局前缀。Project.Two不能。为什么?...

4

1 回答 1

0

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

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

于 2013-09-11T14:29:42.000 回答