无法访问App_Code中的类


197

我已经在ASP.NET中创建了一个网站,并创建了一个类并将其放在App_Code文件夹中。但是,我无法从其他页面访问它。是否需要进行配置以允许此操作?我已经使它在以前的项目中起作用了,但是在某种程度上却没有使它起作用。

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

1
我假设您要在网页中包含名称空间?
2009年

Answers:


637

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

确保将“生成操作”设置为“编译”。


10
如何将其设置为默认构建操作?还是必须对App_Code文件夹中的每个文件执行此操作?
玛拉基岛

3
为什么我不能在Visual Studio 2012中做到这一点?!
RSK 2013年

4
这似乎是VS2012中的错误。也发生在我身上。
James Nail

2
对于那些想要更多细节的人,您可以在以下网址
Alexa Adrian

3
是的,这解决了我的Visual Studio项目中的142个错误,非常感谢您分享此解决方案:-]
Michael G. Workman,2016年

14

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

using CLIck10.App_Code;

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

CLIck10.App_Code.Glob

不知道这是否是您的问题,但是如果您是C#的新手,那么这很容易被绊倒。

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


1
从外观上看,这与构建动作有关-FailBoy的回答解决了问题。谢谢您的回应:)
玛拉基岛

当我在App_Code文件夹中的类中添加了名称空间时,它就很好用了。
mashtheweb

为什么我们必须这样包含namspace?为什么intelliSense如果不指定文件夹名称就无法访问该类?
Elham Kohestani

10

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

using WebApplication3.App_Code;

之后,您将需要转到app_code类属性,并将“生成操作”设置为“编译”。


4

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


1
但是为什么在APP_CODE中呢?我认为PUBLIC类中的任何内容都应在解决方案中自动公开!
Fandango68年

4

我还没有弄清楚为什么会发生这种情况,但是我的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

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

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

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

也许这只是一个.NET 4.0(可能更早)的问题...在还原之前,我在4.5.2中就很好了!


0

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


0

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

无法精确复制场景以进行评论,但不得不关闭并重新打开Visual Studio以进行智能感知以达成共识...

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

为了解决此问题,我将文件夹从App_Code重命名为Code,在类上明确设置了命名空间,并将所有类都设置为“ Compile”

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.