【发布时间】: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 项目中。命名空间只是一个例子。我更改了它的名称,因为首先创建项目的人设置的命名空间包括客户端名称。我更改了示例代码以消除这种歧义。
-
尝试从解决方案中的项目目录中手动删除
bin和obj文件夹。 (所有项目目录。)然后尝试另一个清理和构建。 -
尝试将类复制到与
PageBase相同的文件中,可能是您不小心将Generalcs文件的设置设置为“编译”以外的内容,您可以检查一下文件属性,特别是构建操作?
标签: c# types namespaces type-resolution