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.
- 我仔细检查了两个文件中的名称空间拼写是否正确。
- 我已经尝试将顶级命名空间
Client.WebApp
添加为页面库文件中的 using 指令。
- 我已经尝试完全限定名称
dbo = Client.WebApp.General.GetDB();
没有任何帮助,它坚持认为我的 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,然后将其移动到您想要的文件夹中。
我有一个正在为客户开发的 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.
- 我仔细检查了两个文件中的名称空间拼写是否正确。
- 我已经尝试将顶级命名空间
Client.WebApp
添加为页面库文件中的 using 指令。 - 我已经尝试完全限定名称
dbo = Client.WebApp.General.GetDB();
没有任何帮助,它坚持认为我的 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,然后将其移动到您想要的文件夹中。