驻留在App_Code中的类不可访问

我在ASP中创建了一个网站。NET,并创建了一个类,并把它放在App_Code文件夹中。然而,我不能从我的其他页面访问这。是否需要配置一些东西来允许这一点?我在以前的项目中已经使它工作,但在这个项目中,不知何故。

namespace CLIck10.App_Code
{
public static class Glob
{
...
}
}
145333 次浏览

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

确保“构建动作”设置为“编译”。

把它放在你想要访问类的其他文件的顶部:

using CLIck10.App_Code;

或者像这样从其他文件访问类:

CLIck10.App_Code.Glob

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

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

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

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

using WebApplication3.App_Code;

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

我发现更容易将文件移动到一个单独的类库项目中,然后在web项目中引用该项目,并在文件的using部分应用命名空间。 由于某种原因,其他的解决方案对我来说都不适用,但是这个解决方案却适用

我还没有弄清楚为什么会发生这种情况,但我在App_Code文件夹中有类,它们在彼此中调用方法,并且在我构建. net 4.5.2项目时可以这样做,但后来我不得不将其恢复到4.0,因为目标服务器没有升级。这就是当我发现这个问题(在我的网络中修复langversion后)。Config from 6 to 5…另一个故事)…

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

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

我所有的类都已经在它们的属性中设置为“Compile”,就像这里接受的答案所建议的那样,每个类都有一个相同的公共名称空间,并且每个类的顶部都有using MyNamespace;

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

请注意:如果你创建了一个名为“AppCode”的标准文件夹,将你的类移动到其中,删除“App_Code”文件夹,然后将“AppCode”重命名为“App_Code”,你的问题就会回来。不管你是使用“新建文件夹”还是“添加ASP . net文件夹”选项来创建“App_Code”,它似乎是在名称上输入的。

也许这只是一个。net 4.0(或者更早的版本)的问题…在不得不恢复之前,我在4.5.2中很好!

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

无法精确地复制评论的场景,但不得不关闭和重新开放视觉工作室,以配合智能感知同意…

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

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

我想补充一个为什么会发生在我身上的答案,我只是使用了一个新版本的Visual Studio来添加到一个旧的项目,并使用了“添加Web表单”。我在App_Code中有一个类,由于某种原因,它仅在那组页面上不可访问。我尝试将类更改为“编译”,突然项目的其余部分抱怨类在多个地方,而它不是(在开始时也有一个数字,如3_Whatever)。

我卸载了项目文件,并手动编辑它,发现即使属性窗口说“内容”,指令是“编译”。此外,它还没有添加其他所有类型的子类型。最后,aspx页面有“codebehind”;而不是"CodeFile"我也改变了,不确定我是否需要,但至少它现在看起来像其余的!

<Content Include="MyFile.aspx.cs">
<DependentUpon>MyFile.aspx</DependentUpon>
<SubType>ASPXCodeBehind</SubType>
</Content>

现在一切都正常了。