在App_code文件夹中找不到类型或命名空间

本文关键字:找不到 类型 命名空间 文件夹 App code | 更新日期: 2023-09-27 18:22:48

我在项目的App_code文件夹中编写了一个名为ArchivedFilesWrapper的类,但当我在不同文件夹中的另一个文件中使用该类时,我会出现错误:

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

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

这是我课堂上的一个片段:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace EMCWebAdmin.App_Code
{
    public class ArchivedFilesWrapper
    {

在App_code文件夹中找不到类型或命名空间

通过将*.cs源文件的Build Action属性Content更改为Compile,也许问题会得到解决。在解决方案资源管理器中右键单击源文件,然后选择"属性"。

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

请注意,对于Web应用程序项目MVC项目,在项目中添加App_Code文件夹并在其中放入*.cs文件会导致问题。我无意中从解决方案资源管理器向MVC项目添加了一个App_Code文件夹。VS将名称空间默认为MyProjectName.App_Code。在这种情况下,Visual Studio 2012将生成操作默认为内容,即使类型为.cs代码。在我将*.cs源文件的Build Action PropertyContent更改为Compile后,命名空间已在项目的其他文件夹位置解析。然而,由于出现问题,我不得不更改文件夹的名称——请参阅下文。

重要

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

您需要添加

using EMCWebAdmin.App_Code;

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

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

然后在你的课上换

namespace EMCWebAdmin.App_Code
    {
...

namespace EMCWebAdmin
    {
...

这是visualstudio的一个功能,如果在文件夹结构中创建一个类,它将使用文件夹结构后面的命名空间。

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

是的,将calsses放在另一个文件夹(而不是asp.net特殊文件夹)中,并且只使用应用程序的主命名空间即可解决此问题。谢谢johnmcp。