驻留在App_Code中的类不可访问

Mal*_*chi 191 c# asp.net

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

namespace CLIck10.App_Code
{
    public static class Glob
    {
        ...
    }
}
Run Code Online (Sandbox Code Playgroud)

Ste*_*McD 614

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

确保"Build Action"设置为"Compile".

  • 如何将其设置为默认构建操作?或者我必须为App_Code文件夹中的每个文件执行此操作吗? (10认同)
  • 这似乎是VS2012中的一个错误.也发生在我身上. (4认同)
  • 为什么我不能在Visual Studio 2012中执行此操作? (3认同)
  • 这解决了我的Visual Studio项目中的142个错误,非常感谢分享这个解决方案: - ] (3认同)
  • 对于那些想要更多细节的人,您可以在以下网址找到:http://how-to-code-net.blogspot.ro/2014/04/appcode-classes-not-available-in-aspnet.html (2认同)
  • 6年后,这一天被救了我的一天.谢谢. (2认同)

Aar*_*nLS 14

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

using CLIck10.App_Code;
Run Code Online (Sandbox Code Playgroud)

或者从其他文件访问该类,如下所示:

CLIck10.App_Code.Glob
Run Code Online (Sandbox Code Playgroud)

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

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


小智 10

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

using WebApplication3.App_Code;
Run Code Online (Sandbox Code Playgroud)

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


vap*_*guy 5

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

我的一种方法一直有这样的错误:

The type X.Y conflicts with the imported type X.Y in MyProject.DLL
Run Code Online (Sandbox Code Playgroud)

正如此处接受的答案所建议的那样,我的所有类都已在其属性中设置为“编译”,并且每个类都有一个相同的公共命名空间,并且每个类都using MyNamespace;位于每个类的顶部。

我发现,如果我只是将必须相互调用方法的有问题的类移动到另一个名为“App_Code”以外的标准文件夹中,它们就不会出现此冲突问题。

注意:如果您创建一个名为“AppCode”的标准文件夹,将您的类移入其中,删除“App_Code”文件夹,然后将“AppCode”重命名为“App_Code”,您的问题将再次出现。如果您使用“新建文件夹”或“添加 ASP .NET 文件夹”选项来创建“App_Code”并不重要 - 它似乎键入了名称。

也许这只是 .NET 4.0(可能更早)的问题......我在 4.5.2 中很好,然后不得不恢复!