【问题标题】:Class cannot find another class in the same namespace类在同一个命名空间中找不到另一个类
【发布时间】:2016-02-06 18:51:43
【问题描述】:

我有一个 C# WebApp 正在为客户做。我在项目中有两个类,这样定义(在单独的文件中)......

通用实用程序库:

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

PageBase 类:

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.

  • 我仔细检查了两个文件中的命名空间拼写是否正确。
  • 我已尝试将顶级命名空间 Client.WebApp 添加为页面库文件中的 using 指令。
  • 我已尝试完全限定名称,如 dbo = Client.WebApp.General.GetDB();

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

该项目的目标是 Framework v.4.5.2,我正在使用 VS 2015。

【问题讨论】:

  • 两个类是否在同一个程序集中?
  • 避免使用My。对于任何使用 VB 并可能想要使用您的程序集的人来说,它将与内置的 My 命名空间发生冲突。
  • 是的,它们都在核心 WebApp 项目中,而不是在外部 DLL 项目中。命名空间只是一个例子。我更改了它的名称,因为首先创建项目的人设置的命名空间包括客户端名称。我更改了示例代码以消除这种歧义。
  • 尝试从解决方案中的项目目录中手动删除 binobj 文件夹。 (所有项目目录。)然后尝试另一个清理和构建。
  • 尝试将类复制到与PageBase相同的文件中,可能是您不小心将General cs文件的设置设置为“编译”以外的内容,您可以检查一下文件属性,特别是构建操作?

标签: c# types namespaces type-resolution


【解决方案1】:

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

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

【讨论】:

  • 伙计,你刚刚帮我找出了让我发疯的事情!由于某种原因,一个文件被设置为 Build Action = Content,而不是 Compile。超级不明显。找到你的答案让我检查了。
  • 如果文件设置为“编译”,您可能只需要完全重新启动 Visual Studio。这个错误似乎一直存在于 VS2017
  • 确认,关闭VS17,重新打开,清理,重建似乎解决了。
  • 正如 ecnepsnai 所说...重新启动修复它。谢谢
【解决方案2】:

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

可能还有其他原因。

【讨论】:

    【解决方案3】:

    我遇到了同样的问题:“找不到类型或命名空间”。事实证明,该类位于“Build Action”属性设置为“None”的文件中,这意味着该文件没有被编译。我将它设置为“C# Compiler”,解决了它。

    【讨论】:

      【解决方案4】:

      这有时会发生在我身上。关闭视觉工作室并再次打开它总是为我修复它。

      【讨论】:

        猜你喜欢
        • 2012-05-27
        • 2017-07-21
        • 2011-03-21
        • 1970-01-01
        • 2017-10-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多