C# 类在同一命名空间中找不到其他类

C# 类在同一命名空间中找不到其他类,c#,types,namespaces,type-resolution,C#,Types,Namespaces,Type Resolution,我有一个C网络应用程序,我们正在为客户做。我在项目中有两个类,分别定义在不同的文件中,例如 通用实用程序库: 当我尝试编译时,我从dbo=General.GetDB中得到错误;行: 当前上下文Client.WebApp中不存在名称“General” 我仔细检查了两个文件中名称空间的拼写是否正确。 我已尝试将顶级名称空间Client.WebApp作为using指令添加到pagebase文件中。 我已尝试将名称完全限定为dbo=Client.WebApp.General.GetDB; 没有任何帮助,

我有一个C网络应用程序,我们正在为客户做。我在项目中有两个类,分别定义在不同的文件中,例如

通用实用程序库:

当我尝试编译时,我从dbo=General.GetDB中得到错误;行: 当前上下文Client.WebApp中不存在名称“General”

我仔细检查了两个文件中名称空间的拼写是否正确。 我已尝试将顶级名称空间Client.WebApp作为using指令添加到pagebase文件中。 我已尝试将名称完全限定为dbo=Client.WebApp.General.GetDB; 没有任何帮助,它坚持认为我的普通班不存在。 有趣的是,当构建遇到这个错误并停止时,代码编辑器看不到这个错误,并且在squiggled下语句不会变红


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

这是一个奇怪的错误,在我的VS2015中,如果我将文件构建操作设置为除编译以外的任何类型,则该文件的任何类型都会出现错误下划线


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

我想我可能已经发现,如果我们在假定包含内容文件的文件夹中创建一个文件,它会自动设置该文件的生成类型内容。在我的例子中,我在app_code文件夹下创建了一个文件,它是一个类文件,但是构建类型被设置为Content,这使得它对于我拥有的任何其他类都不可用


可能还有其他原因。

我遇到了同样的问题:找不到类型或命名空间。结果表明,该类位于一个文件中,其Build-Action属性设置为None,这意味着该文件未被编译。我将它设置为C编译器,这就解决了它。

两个类都在同一个程序集中吗?请避免使用我的。它将与任何使用VB的人的内置“我的命名空间”发生冲突,这些人可能希望使用您的程序集。是的,它们都在核心WebApp项目中,而不是在外部DLL项目中。名称空间只是一个示例。我更改了它的名称,因为最初创建该项目的人的名称空间设置中包含了客户机名称。我更改了示例代码以消除这种歧义。请尝试从解决方案中的项目目录中手动删除bin和obj文件夹。所有项目目录。然后尝试另一个清理和构建。尝试将类复制到与PageBase相同的文件中,可能是您不小心将常规cs文件的设置设置为Compile以外的内容,您可以检查文件属性,特别是构建操作吗?伙计,您刚刚帮我弄明白了一些让我发疯的事情!出于某种原因,一个文件被设置为buildaction=Content,而不是Compile。超级不明显。找到您的答案让我检查了一下。如果文件设置为编译,您可能只需要重新启动visual studio即可。这个错误似乎一直存在于VS2017confirm中,关闭VS17,重新打开,清理,重建似乎可以解决它。。。重新启动并修复它。谢谢
namespace Client.WebApp {
    public static class General {
        public static MyDbClass GetDB() {
            //<creates and returns MyDbClass here>
        }
    }
}
namespace Client.WebApp {
    public class PageBase : System.Web.UI.Page {
        protected MyDbClass dbo { get; set; }

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