驻留在App_Code中的类不可访问

时间:2009-08-03 13:12:05

标签: c# asp.net

我在ASP.NET中创建了一个网站并创建了一个类并将其放在App_Code文件夹中。但是我无法从其他页面访问此内容。是否需要配置某些内容以允许此操作?我已经在以前的项目中使用了它,但不是在这个项目中,不知何故。

namespace CLIck10.App_Code
{
    public static class Glob
    {
        ...
    }
}

7 个答案:

答案 0 :(得分:587)

右键单击.cs文件夹中的App_Code文件并检查其属性。

确保“Build Action”设置为“Compile”。

答案 1 :(得分:14)

将它放在要访问该类的其他文件的顶部:

using CLIck10.App_Code;

从其他文件中访问该类:

CLIck10.App_Code.Glob

不确定这是不是你的问题,但如果你是C#的新手,那么这很容易被绊倒。

更新:我最近发现,如果我将一个App_Code文件夹添加到项目中,那么我必须关闭/重新打开Visual Studio才能正确识别这个“特殊”文件夹。

答案 2 :(得分:10)

转到要从其访问App_code类的页面,然后添加app_code类的命名空间。您需要提供using语句,如下所示:

using WebApplication3.App_Code;

之后,您需要转到app_code类属性并将“Build Action”设置为“Compile”。

答案 3 :(得分:4)

确保您使用与页面相同的命名空间

答案 4 :(得分:4)

我还没弄清楚为什么会发生这种情况,但是我的App_Code文件夹中的类正在相互调用方法,并且在我构建.NET时这样做很好4.5.2项目,但随后我不得不将其还原为4.0,因为目标服务器没有升级。当我发现这个问题时(在将我的web.config中的langversion修复为6到5之后......另一个故事)....

我的一种方法一直出现错误:

The type X.Y conflicts with the imported type X.Y in MyProject.DLL

我的所有课程都已设置为"编译"在他们的属性中,正如在此处接受的答案中所建议的那样,每个都有一个相同的公共名称空间,每个名称的顶部都有using MyNamespace;

我发现,如果我只是将必须在彼此之间调用方法的有问题的类移动到另一个标准文件夹而不是" App_Code",它们就会停止出现此冲突问题。

注意:如果您创建名为" AppCode"的标准文件夹,请将您的班级移入其中,删除" App_Code"文件夹,然后重命名" AppCode"到" App_Code",您的问题将会恢复。如果您使用"新文件夹"并不重要。或者"添加ASP .NET文件夹"选项来创建" App_Code" - 似乎关键在于名字。

也许这只是一个.NET 4.0(可能还有更早)的问题......在恢复之前我在4.5.2中表现不错!

答案 5 :(得分:0)

我发现将文件移动到单独的类库项目中更容易,然后在Web项目中引用该项目,并在文件的using部分中应用命名空间。 出于某种原因,其他解决方案对我不起作用,但这项工作确实有效。

答案 6 :(得分:0)

就我而言,我无法使用App_Code文件夹中定义的类构建项目。

无法精确复制场景以进行评论,但必须关闭并重新打开visual studio以进行智能感知以便合作...

我注意到当App_Code文件夹中的一个类设置为'Compile'而不是'Content'(右键单击它)时,错误来自该类的第二个版本...向左看 - 代码窗格和选项卡之间的3个字段中的大多数3个。 “另一个”被称为10_App_Code或类似的东西。

为了解决这个问题,我将文件夹从App_Code重命名为Code,在类上显式设置名称空间并将所有类设置为'Compile'