【问题标题】:Can't see a class in the same namespace in different file at compile time在编译时看不到不同文件中相同命名空间中的类
【发布时间】:2018-01-22 10:50:15
【问题描述】:

我的问题如下:

我有一个命名空间,比如说“Foo”。其中已经有两个类,比如说“MyClass”和“SomeOtherClass”。它们都在不同的文件中。

我需要在第三个文件中向这个命名空间添加第三个类,比如说“数据”。

首先,我毫无问题地实现了“SomeOtherClass”的逻辑。 但随后项目发生了一些变化,为了清楚起见,需要将“SomeOtherClass”中使用“Data”的逻辑移到“MyClass”中。

但是现在每当我尝试编译时,我都会收到一个编译器错误报告“找不到类型或命名空间名称‘数据’”。

奇怪的是,如果我尝试在编辑器中输入“Data”,那么智能感知会提示我该类的有效选项,如果我以“Foo.Data”开头也是一样,名称也会显示浅蓝色。

如果我删除“数据”并将类添加到与“MyClass”相同的文件中,一切都很好。如果我在自己的文件中重新添加“数据”(不删除 MyClass 文件中的那个),那么“Foo.Data”和“Foo.Data”之间就会出现歧义(这是合乎逻辑的)。

我也尝试从头开始删除并重新创建“数据”,但没有解决任何问题。

我在互联网上搜索了一个解决方案,但我只能找到与项目引用或目标框架不好相关的答案,但这不适用于我的情况,因为它们都在同一个项目中,我可以访问周围其他项目中的“数据”。

注意:我不知道它是否重要,但“MyClass”和“SomeOtherClass”继承自同一个父类。

1. MyClass.cs

namespace Foo
{
    public class MyClass
    {
        private Data data; //Error at compile time - Type or namespace name 'Data' could not be found
    }
}

2。数据.cs

namespace Foo
{
    public class Data
    {
        //Some logic to handle the data
    }
}

3. SomeOtherClass.cs

namespace Foo
{
    public class SomeOtherClass
    {
        private Data data; //Actually works well
    }
}

【问题讨论】:

  • 所有班级都在同一个项目中?
  • 您能否确认相关的 *.cs 文件已将 BuildAction 设置为 Compile
  • 是的,所有班级都在同一个项目中,在同一个文件夹下。 @Grx70 这是我检查的第一件事,是的,所有相关的 *.cs 都将 BuildAction 设置为 Compile
  • 这很奇怪。从您发布的内容(尽管它很模糊)看来,这个错误似乎不是来自您的代码,所以我的下一个猜测是项目中的一个“错误”。我会尝试以下步骤:将Data 移动到其他文件(例如Data2.cs)并删除_Data.cs。如果有帮助,请尝试将 Data2.cs 重命名为 Data.cs。如果它再次中断,请检查 .csproj 文件以查找对 Data.cs 的引用并查找异常情况。但是,如果将 Data 移动到 Data2.cs 没有帮助,则错误可能出在您的代码中 - 仔细检查 MyClassSomeOtherClass
  • 另外,我假设您已经尝试过“关闭再打开”,即清理项目/解决方案,删除 binobj 文件夹等

标签: c# visual-studio-2010


【解决方案1】:

好的,按照@Grx70 的建议,我尝试重命名很多东西。

Data,到Data2,没有效果。 MyClass 到 MyClass2,有一些效果。

通过查看最后一次更改给出的输出,我发现另一个项目使用文件 MyClass.cs,并为在 MyClass.cs 中使用的所有其他文件提供一个副本。

通过在该项目的csproj中为Data.cs添加一个Include,并将Data.cs文件复制/粘贴到其文件夹中,它解决了问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-17
    • 2016-09-16
    相关资源
    最近更新 更多