C# web应用程序不能访问app_code下类的原因以及解决方法
在用C#开发web的时候,可以通过创建website和应用程序两种方式,应用程序这种方式使用的多一些,在website下是可以访问app_code下的类的,应用程序不支持。
解决方法,将app_code下的类的属性的生成操作由“内容”改为“编译”。
应用程序这种方式下,app_code下的类和普通文件夹下的类是一样的。
顺便百度了下内容和编译的区别,内容(Content) - 不编译该文件,但将其包含在“内容”(Content) 输出组中。编译(Compile) - 将该文件编译到生成输出中。此设置用于代码文件。C#项目添加到解决方案资源管理器中,则需要把文件类型设置为编译类型,.cs文件指的是可编译的代码文件。
今天在写项目的时候需要把文件放在App_Code中,调用里面的类,怎么也引用不了,包括直接写上路径,也找不到类。结果在网上找了一下解决方案。 在Web应用程序中不能通过右键项目-〉”添加“-〉”添加ASP.NET文件夹“方式添加 。因为Web应用程序中App_Code就不存在 。 不过可以通过手动的方式创建,添加一个文件夹命名为App_Code就可以了。这样子创建的和在网站中创建的App_Code的在外观上一样的。 先不要高兴,没有这么简单的。
一:你在App_Code创建类时,会发现没有智能提示。在页面后台引用时,会抱错,说不存在。 解决的办法就是选中你的类文件,在属性中”高级“中的”生成操作“默认”内容“要改为“编译”就可以了。 到这就可以了。
你还可以随便建个文件夹,或者根本就不用文件夹直接添加了类,只要修改了类高级属性的”生成操作“改为”编译“就可以。
PS:下面是具体的操作手册:
我们在.net编程时,有时候会出现在App_Code里的类,其他地方不能调用它。提示未找到类型或命名空间名称。遇到这样的问题该怎么解决呢?请看小编的图文教程!
【App_Code文件夹】
可以在App_Code文件夹中存储源代码,在运行时将会自动对这些代码进行编译。Web应用程序中的其他任何代码都可以访问产生的程序集。因此,App_Code文件夹的工作方式与Bin文件夹很类似,不同之处是您可以在其中存储源代码而非已编译的代码。App_Code文件夹及其在ASP.NET
Web应用程序中的特殊地位使您可以创建自定义类和其他仅源代码文件,并在Web应用程序中使用它们而不必单独对它们进行编译。
App_Code文件夹可以包含以传统类文件(即带有.vb、.cs等扩展名的文件)的形式编写的源代码文件。但是,它也可以包含并非明确显示出由某一特定编程语言编写的文件。例如.wsdl(Web服务发现语言)文件和XML架构(.xsd)文件。ASP.NET可以将这些文件编译成程序集。
根据您的需要,App_Code文件夹可以包含任意数量的文件和子文件夹,文件夹的名称也可以任意起。您可以采用任何您认为方便的方式组织源代码,ASP.NET仍会将所有代码编译成单个程序集,并且Web应用程序任意处的其他代码都可以访问该程序集。
【拓展:如果不将.cs类放在App_Code文件夹中,要如何才能引用?】
如果想在其他地方写.cs的话,就必须要新建项目–>Visual C#–>类库(不创建新的解决方案),然后在新建的类库里面写新的的基类代码,不过不要忘记在基类的class前面加个public,写好生成后在原解决方案里面右键–>引用即可。