【发布时间】:2015-09-02 01:04:15
【问题描述】:
这有点吓人。
我想一定有某个地方可以解释为什么会发生这种情况。
在我们的解决方案中,大约有 50 个不同的项目。大多数情况下,这些库以命名空间 OurCompany 开头。
我们有 OurComany.This.That 和 OurCompany.Foo.Bar... 等。
外部库与命名空间之间存在命名空间/类冲突
OurCompany.Foo.Bar
还有一个像这样合格的班级..
OurCompany.Some.Location.Foo
错误是这样的:
Error 75 The type or namespace name 'MethodName' does not exist in the
namespace 'OurCompany.Foo' (are you missing an assembly reference?)
当我完全限定“OurCompany”命名空间下的任何内容时,即使 Resharper 也会给我一个“限定符是多余的”消息......即
OurCompany.Some.Location.Foo.MethodName();
//OurCompany is redundant
我无法弄清楚到底是什么在这样做。解决方案非常庞大,因此将问题拆分并尝试对问题进行逆向工程对我来说并不是一个很好的解决方案。
我应该声明,如果我使用...
Some.Location.Foo.MethodName(); //Leaving out OurCompany
...Resharper 消息消失。
【问题讨论】:
-
SomeStaticClass.SomeStaticMethod();有效吗?导致错误消息的代码是什么? -
如果你在课堂上
OurCompany。你不必限定它。只需输入SomeStaticClass.SomeStaticMethod();甚至SomeStaticMethod();。这取决于你在哪里。这就是 resharper 说的原因 -
整个解决方案都在发生这种情况。我有 3122 个错误。没有任何效果,因为它不会编译。
-
冗余警告不是错误。您有 3122 个错误我相信您需要将一些文件引用到您的项目中才能工作。
-
不,很抱歉,这绝对不是。在我使用命名空间“Foo”添加我的外部库之前,一切都编译得很好。由于与“Foo”命名空间的冲突,编译器对在主解决方案中使用“Foo”类的任何东西都发疯了。这很疯狂,因为 Foo 不在同一个范围内。我唯一需要做的是第一个命名空间“OurCompany”,在整个解决方案中被认为是多余的。
标签: c# namespaces projects-and-solutions qualifiers