在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
{
通过将*.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 Property从Content更改为Compile后,命名空间已在项目的其他文件夹位置解析。然而,由于出现问题,我不得不更改文件夹的名称——请参阅下文。
重要
在MVC或Web应用程序项目中,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。