C# Can';在编译时,在不同的文件中看不到同一名称空间中的类
我的问题如下: 我有一个名称空间,比如说“Foo”。其中已经有两个类,比如“MyClass”和“SomeOtherClass”。它们都在不同的文件中 我需要在第三个文件中向这个名称空间添加第三个类,比如“Data” 首先,我毫无问题地实现了“SomeOtherClass”的逻辑。 但后来项目有了一些发展,为了清晰起见,需要将使用“数据”的“SomeOtherClass”中的逻辑移到“MyClass”中 但现在每当我尝试编译时,我都会收到一个编译器错误报告,“找不到类型或命名空间名称'Data' 奇怪的是,如果我尝试在编辑器中键入“Data”,那么intellisense会提示我该类的有效选项,如果我以“Foo.Data”开头,名称也会以浅蓝色显示 如果我删除“数据”并将该类添加到与“MyClass”相同的文件中,则一切正常。如果我在自己的文件中重新添加“Data”(而不删除MyClass文件中的一个),那么“Foo.Data”和“Foo.Data”之间就存在歧义(这是合乎逻辑的) 我还尝试从头开始删除和重新创建“数据”,但没有解决任何问题 我在互联网上搜索了一个解决方案,但我只能找到与项目引用或目标框架不好相关的答案,但这不适用于我的情况,因为它们都在同一个项目中,我可以访问其他项目中的“数据” 注:我不知道这是否重要,但“MyClass”和“SomeOtherClass”继承自同一父类 1。MyClass.csC# Can';在编译时,在不同的文件中看不到同一名称空间中的类,c#,visual-studio-2010,C#,Visual Studio 2010,我的问题如下: 我有一个名称空间,比如说“Foo”。其中已经有两个类,比如“MyClass”和“SomeOtherClass”。它们都在不同的文件中 我需要在第三个文件中向这个名称空间添加第三个类,比如“Data” 首先,我毫无问题地实现了“SomeOtherClass”的逻辑。 但后来项目有了一些发展,为了清晰起见,需要将使用“数据”的“SomeOtherClass”中的逻辑移到“MyClass”中 但现在每当我尝试编译时,我都会收到一个编译器错误报告,“找不到类型或命名空间名称'Data'
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文件夹等。