Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/visual-studio-2010/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Can';在编译时,在不同的文件中看不到同一名称空间中的类_C#_Visual Studio 2010 - Fatal编程技术网

C# Can';在编译时,在不同的文件中看不到同一名称空间中的类

C# Can';在编译时,在不同的文件中看不到同一名称空间中的类,c#,visual-studio-2010,C#,Visual Studio 2010,我的问题如下: 我有一个名称空间,比如说“Foo”。其中已经有两个类,比如“MyClass”和“SomeOtherClass”。它们都在不同的文件中 我需要在第三个文件中向这个名称空间添加第三个类,比如“Data” 首先,我毫无问题地实现了“SomeOtherClass”的逻辑。 但后来项目有了一些发展,为了清晰起见,需要将使用“数据”的“SomeOtherClass”中的逻辑移到“MyClass”中 但现在每当我尝试编译时,我都会收到一个编译器错误报告,“找不到类型或命名空间名称'Data'

我的问题如下:

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

我需要在第三个文件中向这个名称空间添加第三个类,比如“Data”

首先,我毫无问题地实现了“SomeOtherClass”的逻辑。 但后来项目有了一些发展,为了清晰起见,需要将使用“数据”的“SomeOtherClass”中的逻辑移到“MyClass”中

但现在每当我尝试编译时,我都会收到一个编译器错误报告,“找不到类型或命名空间名称'Data'

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

如果我删除“数据”并将该类添加到与“MyClass”相同的文件中,则一切正常。如果我在自己的文件中重新添加“Data”(而不删除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
    }
}
namespace Foo
{
    public class Data
    {
        //Some logic to handle the data
    }
}
namespace Foo
{
    public class SomeOtherClass
    {
        private Data data; //Actually works well
    }
}
2。Data.cs

namespace Foo
{
    public class MyClass
    {
        private Data data; //Error at compile time - Type or namespace name 'Data' could not be found
    }
}
namespace Foo
{
    public class Data
    {
        //Some logic to handle the data
    }
}
namespace Foo
{
    public class SomeOtherClass
    {
        private Data data; //Actually works well
    }
}
3。SomeOtherClass.cs

namespace Foo
{
    public class MyClass
    {
        private Data data; //Error at compile time - Type or namespace name 'Data' could not be found
    }
}
namespace Foo
{
    public class Data
    {
        //Some logic to handle the data
    }
}
namespace Foo
{
    public class SomeOtherClass
    {
        private Data data; //Actually works well
    }
}

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

数据,到数据2,没有效果。从MyClass到MyClass2,有一些效果

通过查看上一次更改的输出,我发现另一个项目使用了MyClass.cs文件,并且有一个MyClass.cs中使用的所有其他文件的副本


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

所有类都在同一个项目中?能否确认相关的*.cs文件已将BuildAction设置为编译?是的,所有类都在同一个文件夹下的同一个项目中@Grx70这是我检查的第一件事,是的,所有相关的*.cs都将BuildAction设置为CompileThat's Special。从您发布的内容来看(虽然很模糊),这个错误似乎不是源于您的代码,所以我的下一个猜测是项目中的一个“bug”。我会尝试以下步骤:将
数据
移动到其他文件(例如Data2.cs)并删除_Data.cs。如果有帮助,请尝试将Data2.cs重命名为Data.cs。如果它再次中断,请检查.csproj文件中对Data.cs的引用,并查找异常情况。但是,如果将
数据
移动到Data2.cs没有帮助,那么错误可能仍然存在于您的代码中-仔细检查
MyClass
SomeOtherClass
。此外,我假设您已经尝试过“关闭并再次打开”,即清理项目/解决方案、删除bin和obj文件夹等。