无法从App_code文件夹中找到类型或命名空间

时间:2012-02-07 15:30:06

标签: c# asp.net

我在项目的App_code文件夹中编写了一个名为ArchivedFilesWrapper的类,但是当我在另一个文件夹中使用此类时,我得到错误:

找不到类型或命名空间名称'ArchivedFilesWrapper'(您是否缺少using指令或程序集引用?)

我认为每个页面都应该能够找到同一项目中包含的类,但我想情况并非如此。有人可以告诉我我需要使用的声明吗?

以下是我班级的摘录:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace EMCWebAdmin.App_Code
{
    public class ArchivedFilesWrapper
    {

4 个答案:

答案 0 :(得分:71)

也许问题可以通过将* .cs源文件的构建操作属性更改为内容中的编译来解决。在Solution Explorer中右键单击源文件,然后选择Property。

请注意, App_Code 文件夹适用于网站项目

请注意,对于 Web应用程序项目 MVC 项目,将 App_Code 文件夹添加到项目中并将* .cs文件放入其中会引起问题。我无意中从解决方案资源管理器中将 App_Code 文件夹添加到我的MVC项目中。 VS将名称空间默认为MyProjectName.App_Code。 在这种情况下,即使类型为.cs代码,Visual Studio 2012也默认将构建操作转换为内容。将* .cs源文件的构建操作属性更改为内容中的编译后,命名空间在项目的其他文件夹位置得到解析。但是由于问题,我不得不更改文件夹的名称 - 见下文。

重要

MVC Web应用程序项目中, App_Code 文件夹出现问题,因为它有网站项目类型语义。发布(部署)到服务器时会编译此文件夹。通过将Build Action从Content更改为Compile,您可以通过强制立即编译来解决开发环境中的命名空间问题,但是当第二次编译导致部署中出现 objects defined twice 错误时,您会遇到麻烦。将代码文件放在具有不同名称的文件夹中。如果您将网站转换为Web应用程序,请参阅网络上的指南 - 不在本问题的范围内。要阅读有关不同项目类型see this blog

App_Code 文件夹的更多信息

答案 1 :(得分:4)

您需要添加

using EMCWebAdmin.App_Code;

到您希望能够使用该课程的所有页面。

或者,您可以将类所在的名称空间更改为所有网页使用的名称空间,假定它是EMCWebAdmin

然后在你的班级改变

namespace EMCWebAdmin.App_Code
    {
...

namespace EMCWebAdmin
    {
...

这是visual studio的一项功能,如果您在文件夹结构中创建一个类,它将使用一个遵循文件夹结构的命名空间。

答案 2 :(得分:2)

如果您将其转换为网络应用程序,它应该工作。缺点是每次更改它并启动应用程序时,它将不再在app_code文件夹中自动生成代码。我从未见过专业开发人员使用网站项目。我不知道MS在创建它们时是谁的目标。

答案 3 :(得分:2)

是的,把calsses放到另一个文件夹(不是asp.net特殊文件夹),并且只使用应用程序的主命名空间来解决这个问题。 谢谢johnmcp。