Web Site项目和ASP.NET Web Application中App_Code文件夹的作用

时间:2022-09-01 08:10:25
原文地址:Web Site项目和ASP.NET Web Application中App_Code文件夹的作用作者:柳萧

   我现在要建一个ASP.NET的网站了,不难吧,开始动手。如下图:

Web Site项目和ASP.NET Web Application中App_Code文件夹的作用


    这种方法建立WebSite项目,使用过的开发者都知道,如果需要新建一个类,例如DataBase.cs。此类只服务于web页面,不适于放入网站自身类库中,因此希望其独立存在于类库之外,只是用于在web应用程序中被web页面调用。这样一来此类最好不要通过形成dll文件,并将其放入bin文件夹以供web页面调用。但是如果将DataBase.cs的源文件放在web网站根目录下面后,在web页面却无法调用该类。但如果通过“右键项目-〉添加-〉添加ASP.NET文件夹” 这种方式添加一个App_Code文件夹,如下图:

 

Web Site项目和ASP.NET Web Application中App_Code文件夹的作用

    把DataBase.cs放到这个文件夹中,就可以直接调用了,为什么呢??      app_code文件夹中可以直接存储源代码,Web Site在运行时将会自动对这些代码进行编译。Web应用程序中的其他任何代码都可以访问其产生的程序集。因此,App_Code文件夹的工作方式与 Bin文件夹很类似,不同之处是你可以在其中存储源代码而非已编译的代码。App_Code文件夹及其在 ASP.NET Web应用程序中的特殊地位使您可以创建自定义类和其他仅源代码文件,并在 Web应用程序中使用它们而不必单独对它们进行编译。
   那好吧,我可以直接使用源代码文件,而不需要调用DLL文件了,貌似很不错,省了不少事儿。      总结一下app_code文件夹和bin文件夹的区别:
   1:APP_Code文件夹存储的是类的源文件;bin文件夹里存储的是类库的.dll文件,是已经编译过的类库。
   2:使用APP_Code文件夹中类的时候,不需要在页面上添加任何显示的指令或声明来创建依赖性;而要使用bin文件夹中的类时,则必须在页面上先引用对应的命名空间才能使用。

   接下来呢,要干点什么,Web Site貌似简单了一些,来个多层架构的ASP.NET WebApplication怎么样,说干就干。也记的先把APP_Code文件夹建好,省的不能调用,如下图:

Web Site项目和ASP.NET Web Application中App_Code文件夹的作用


   问题出来了,怎么居然没有APP_code这个文件夹呢,那就新建立一个普通文件夹,起这样一个名字吧,看起来是完全一样的,然后建立DataBase.cs类,应该可以使用吧。添加文件代码,如下图:
 

Web Site项目和ASP.NET Web Application中App_Code文件夹的作用

   报错信息:“The type or namespace name 'DataBase' could not be found (areyou missing a using directive or an assembly reference”;
   崩溃了,为什么不行呢,冷静一下,很明显在“APP_CODE文件夹中,WebSite项目运行时会被自动编译的代码”在这个项目里并没有被编译,因而现在的DataBase.cs还仅仅是一个文件,他并不会在项目执行时被编译,也不会被其他程序文件所使用,所以出现这个错误就正常了,那好吧,手动修改吧。
     选中你的类文件,在 Properties -〉Build Action中 -〉默认 "Content" 改为 "Compile"就可以了,如下图:  

Web Site项目和ASP.NET Web Application中App_Code文件夹的作用



完美解决,剩下的事情,继续吧。