在开发asp.net网站的时候,需要新建一个类A.CLASS。此类只服务于web页面,不适于放入网站自身类库中,因此希望其独立存在于类库之外,只是用于在web应用程序中被web页面调用。这样一来此类最好不要通过形成dll文件,并将其放入bin文件夹以供web页面调用。但笔者发现将A.CLASS的源文件放在web网站根目录下面后,在web页面却无法调用该类。
首先考虑会不会是命名空间的问题,于是为A.CLASS单独声明了命名空间,但是发现web页面引用此命名空间后还是无法使用该类。
接着参考了其他正常的web网站,比对了网站之间架构的异同,发现正常的web网站有一个app_code文件夹,而页面调用类的源文件就放在该文件夹下面。于是尝试了一下把A.CLASS的源文件也放在app_code文件夹下,发现web页面可以正常调用该类。
于是得出结论,是因为app_code文件夹在起作用。
msdn对app_code文件夹解释如下:
可以在app_code文件夹中存储源代码,在运行时将会自动对这些代码进行编译。Web 应用程序中的其他任何代码都可以访问产生的程序集。因此,App_Code文件夹的工作方式与 Bin 文件夹很类似,不同之处是您可以在其中存储源代码而非已编译的代码。App_Code文件夹及其在 ASP.NET Web 应用程序中的特殊地位使您可以创建自定义类和其他仅源代码文件,并在 Web 应用程序中使用它们而不必单独对它们进行编译。
总结一下app_code文件夹和bin文件夹的区别:
1,app_code 文件夹存储的是类的源文件;bin文件夹里存储的是类库的.dll文件,是已经编译过的类库。
2,使用app_code文件夹中类的时候,不需要在页面上添加任何显示的指令或声明来创建依赖性;而要使用bin文件夹中的类时,则必须在页面上先引用对应的命名空间才能使用。





