提问人:eje211 提问时间:4/27/2023 更新时间:4/27/2023 访问量:194
在 C 语言中找不到命名空间#
Namespace not found in C#
问:
这是我的基本,但就我个人而言,我被难住了。
我正在接管一个以前组织得不是很好的 C# 项目。命名空间非常分散在整个代码中。具体来说,这是一个 Unity 项目,但这实际上只是一个 C# 问题。
嵌套目录深处的文件中存在一个类型(或类),该类型(或类)不能在项目其他位置的另一个文件中引用。
如果类是 ,则如下所示:MyClass
File 1
------
public class MyClass
{
// Stuff inside.
}
和
File 2
------
using ManyThings;
namespace SomeNamespace.NestedNamespace { // These came before me.
public class SomethingElse
{
private MyClass _myClass; // <-- the type "MyClass" cannot be found.
}
}
所以我(天真地)认为,如果我在文件 1 周围添加一个命名空间,它可能会有所帮助:
File 1
------
namespace FindMe
{
public class MyClass
{
// Stuff inside.
}
}
和
File 2
------
using ManyThings;
using FindMe; // <-- The namespace FindMe cannot be found.
// If I name it global::FindMe, it changes nothing.
namespace SomeNamespace.NestedNamespace {
public class SomethingElse
{
private MyClass _myClass; // <-- the type "MyClass" STILL cannot be found.
}
}
我也尝试了类似的东西,以防万一。但它也没有被发现。莱德告诉我:.Unity 告诉我:.global::FindMe
Cannot resolve symbol 'FindMe'
The type or namespace name 'FindMe' could not be found in the global namespace (are you missing an assembly reference?)
我一定错过了一些明显的东西,但是什么?
此外,在 Rider 中,当我尝试在类上使用它时,“重构”菜单的内容几乎全部变灰了。我不知道这是否重要。我尝试在使缓存失效后重新启动。MyClass
同样,这是一个巨大的项目,有许多未使用的文件。我正在尝试清理它。这个类需要保留。这就是为什么我不分享实际代码的原因。它看起来...讨厌。
但是我错过了什么?
答:
只要你们在同一个项目中,这应该可以工作。
如果您不在同一个项目中,而是在同一个解决方案中,您可以将依赖关系从一个项目添加到另一个项目,如下所示:
右键单击项目资源管理器依赖项,添加项目依赖项,选择您的项目
这样,您就可以访问其他项目中的命名空间。´
另请注意,嵌套命名空间的工作方式与带有句点的命名空间声明相同。
namespace SomeNamespace.FindMe
{
...
}
等同于:
namespace SomeNamespace
{
namespace FindMe
{
...
}
}
希望这会有所帮助
评论