Class 在同一个命名空间中找不到另一个 class

Class cannot find another class in the same namespace

我有一个正在为客户开发的 C# WebApp。我在项目中有两个 classes,它们是这样定义的(在单独的文件中)...

通用实用程序库:

namespace Client.WebApp {
    public static class General {
        public static MyDbClass GetDB() {
            //<creates and returns MyDbClass here>
        }
    }
}

一个页面库class:

namespace Client.WebApp {
    public class PageBase : System.Web.UI.Page {
        protected MyDbClass dbo { get; set; }

        public PageBase() {
            dbo = General.GetDB();
        }
    }
}

当我尝试编译时,我从 dbo = General.GetDB(); 行得到错误:
The name 'General' does not exist in the current context Client.WebApp.

没有任何帮助,它坚持认为我的 General class 不存在。 有趣的是,当构建遇到这个错误并停止时,代码编辑器没有看到这个错误,语句也没有变成红色。

该项目的目标是 Framework v.4.5.2,我在 VS 2015 中工作。

这是一个奇怪的错误,在我的 VS2015 中,如果我将文件构建操作设置为 "Compile" 以外的任何内容,我会在该文件的任何类型上收到错误下划线。

无论如何,这里的解决方案是验证构建操作是否设置为 "Compile",我不确定为什么添加新文件会将构建操作设置为 "Compile" 以外的任何内容.我还测试了尝试以多种方式添加新文件(select 一个文本文件模板并将其命名为 something.cs),它仍然将其设置为 "Compile"。您应该验证您的 VS2015 实例已更新为最新更新。

我想我可能已经弄明白了,如果我们在一个假设有内容文件的文件夹中创建一个文件,它会自动设置该文件的构建类型内容。在我的案例中,我在 app_code 文件夹下创建了一个文件,它是一个 class 文件,但构建类型设置为内容,这使得我拥有的任何其他 classes 都无法使用它。

可能还有其他原因

我遇到了同样的问题:“找不到类型或命名空间”。事实证明,class 在一个文件中,“构建操作”属性 设置为“None”,这意味着该文件未被编译。我将它设置为“C# 编译器”,解决了它。

我有时会遇到这种情况。关闭 visual studio 并再次打开它总能为我解决问题。

尝试在 Project 文件夹中创建一个新的 Class,然后将其移动到您想要的文件夹中。