我有一个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工作。
答案 0 :(得分:9)
这是一个奇怪的错误,在我的VS2015中,如果我将文件Build Action设置为“Compile”以外的任何内容,我会在该文件的任何类型上显示错误下划线。
无论如何,这里的解决方案是验证Build Action是否设置为“Compile”,我不确定为什么添加新文件会将构建操作设置为“Compile”以外的任何内容。我还测试了尝试以多种方式添加新文件(选择文本文件模板并将其命名为something.cs),它仍然将其设置为“编译”。您应该验证您的VS2015实例是否已使用最新更新进行更新。
答案 1 :(得分:1)
我遇到了同样的问题:“找不到类型或命名空间”。结果发现该类位于“Build Action”属性设置为“None”的文件中,这意味着该文件未被编译。我将它设置为“C# Compiler”,解决了它。
答案 2 :(得分:0)
我想我可能已经弄清楚了,如果我们在一个假定有内容文件的文件夹中创建一个文件,它将自动设置该文件的构建类型内容。在我的案例中,我在app_code文件夹下创建了一个文件,它是一个类文件,但是构建类型设置为Content,这使其对我拥有的任何其他类都不可用。
也许还有其他原因。