Bin文件夹
Bin文件夹包含应用程序所需的用于控件组件或者需要引用的任何其他代码的可部署程
序集该目录中存在的任何dll文 件将自动地链接到应用程序
App_Browser文件夹
该可选的文件夹包含browser文件browser文件描述浏览器(不管是移动设备浏览器还
是台式机浏览器)的特 征和功能
App_Code文件夹
App_Code文件夹正好在Web应用程序根目录下其存储所有应当作为应用程序的一部分动态
编译的类文件这些类文件自 动链接到应用程序而不需要在页面中添加任何显式指令或
声明来创建依赖性App_Code文件夹中放置的类文件可以包含任何可识别的ASPNET组件
——自定义控件辅助类build提供程序业务类自定义提供程序HTTP处理程序等
注意 在开发时对App_Code文件夹的更改会导致整个应用程序重新编译对于大型
项目这可能不受欢迎而且很耗时为此鼓励大家将代码进行模块化处理 到不同的类
库中按逻辑上相关的类集合进行组织应用程序专用的辅助类大多应当放置在App_Code文
件夹中
App_Code文件夹中存放的所有类文件应当使用相同的语言如果类文件使用两种或多种语言
编写则必须创建特定语言的子目录以包含用每种语言编写的类一旦根据语言组织这些
类文件就要在nfig文件中为每个子目录添加一个设置
<compilation>
<codeSubDirectories>
<add directoryName=VBFolder />
</codeSubDirectories>
</compilation>
重要的是特定语言的子目录应在nfig文件中注册否则不管它们属于哪个文件夹
App_Code文件夹下 的所有文件将被编译成一个单独的程序集上述配置脚本描述了这么
一种情况即所有的C#文件都放在App_Code文件夹的根目录下而把几个 Visual Basic
NET类文件移入VBFolder目录中如果<codeSubDirectories>节中提到的目录不存在则
会收到一个编译错误提 示
App_Code根文件夹中的文件被编译成App_Code_xxxdll程序集其中xxx是随机生成的字符
序列一个 给定子目录中的文件将被编译成一个名为App_SubCode_xxx_yyydll的动态创
建的程序集其中xxx指示子目录的名称而yyy是一个 随机字符序列只有在应用程序根
目录中的nfig文件中进行了设置<codeSubDirectories>节才有效
在App_Code目录或任何其他子目录中放置一个assemblyinfocs文件可以创建一个强命名
的程序集显然如果该文件夹包含Visual Basic NET文件那么将使用
assemblyinfovb文件程序集配置文件可以引用一个snk文件来保存强名称的密钥
注意 给一个程序集设置一个强名称首先必须获得一个公开/私有密钥对通过
使用强名称(Strong Name)工具(snexe)可以获得这样一个密钥对强名称工具是我们可
以在NET Framework的安装路径中发现的SDK binary之一密钥对文件通常有一个snk扩
展名可以将该文件保存到一个应用程序文件夹中并在assemblyinfocs文件中引用它
如下所示
[assembly: AssemblyKeyFileAttribute(@yourKeyPairsnk)]
注意Visual Basic NET是在包含Visual Studio Solution的目录中寻找密钥文件
而C#编译器则在包含该binary的目录中寻找密钥文件据此可知用此属性调整我们使用的
路径或者把密钥文件放在合适的文件夹中
在随后发生的任何重新生成中程序集的名称将发生变化同时老的AppDomain请求一结
束就删除老的程序集
App_Code文件夹并非只能包含类文件特别是它可以包含并能自动地处理代表数据架构的
XSD文件把一个XSD文件 添加到该文件夹中时编译器将把它解析成一个有类型的
DataSet类并将它添加到应用程序作用域中在ASPNET x中这一工作由Visual
Studio NET向导使用一个命令行实用程序(xsdexe)完成的
注意 使用nfig文件注册一个组件(例如一个自定义的服务器控件或一
个自定义的HTTP处理程序)时通常要求指定包含该代码的程序集名称如 果该组件定义
在App_Code文件夹中则应该用什么名称来指示程序集?在这种情况下只是忽略程序集信
息并规定完整的类名即可如果没有规定任何程 序集则ASPNET运行库将试图从任何
已装载的程序集中装入该类包括为App_Code文件夹动态创建的程序集
App_Data文件夹
App_Data文件夹应该包含应用程序的本地数据存储它通常以文件(诸如Microsoft
Access或Microsoft SQL Server Express数据库XML文件文本文件以及应用程序支持
的任何其他文件)形式包含数据存储该文件夹内容不由ASPNET处理该文件夹是ASPNET
提供程序存储自身数据的默认位置
注意 默认ASPNET帐户被授予对文件夹的完全访问权限如果碰巧要改变
ASPNET帐户一定要确保新帐户被授予对该文件夹的读/写访问权
App_GlobalResources文件夹
App_LocalResources文件夹
App_Themes文件夹
App_Themes文件夹为ASPNET控件定义主题主题包含在App_Themes文件夹下的一个文件夹
根据定义一个主题是一组带有样式信息的文件主题文件夹中的文件内容被编译以生
成一个类而该类被页面调用以编程的方式设置主题化控件的样式
App_Themes文件夹列出应用程序的本地主题 应用程序还可以继承如下文件夹中定义的全
局主题
%WINDOWS%\MicrosoftNET\Framework\[version]\ASPNETClientFiles\Themes
从编译的角度看全局主题和局部主题没有区别如果一个给定名称的主题既存在应用程
序的本地主题又存在服务器机器的全局主题则本地主题优先适用
App_WebReferences文件夹
在Visual Studio NET 中一个需要访问Web服务的ASPNET应用程序将通过添
加Web引用对话框获得相应的wsdl文件Web服务的WSDL(Web Service Description
Language)文档对于从页面使用Web服务是不够的ASPNET页面最终是一个托管类并且
需要与另一个托管类通信因此Web服务被一个 代理类所包装该代理类是由Visual
Studio使用命令行工具wsdlexe的服务创建的该代理类尽量包含与Web服务商的Web方法一
样多的方法并且它结合了Web服务的公共接口 定义的任何自定义的数据类型
这个操作不需要开发人员付出很大的代价然而开发人员显然要依赖于Visual Studio来
生成代理类如果能够直接把wsdl文件放在应用程序的目录树的某个地方并让ASPNET处
理其余的任务这样不是更容易更简单 吗?这正好是App_WebReferences文件夹要做的
事情
它识别那些用来描述所绑定的Web服务的wsdl文件并生成运行时代理类以便ASPNET页
面能够以类型安全的方式 放置对Web服务的调用App_WebReferences文件夹可以包含子文
件夹子文件夹的名称驱动最后所得到的代理类的命名空间而WSDL文件 定义类名例如
sampleswsdl文件和ProsAspNet子文件夹将创建一个称为ProAspNetSamples的代理
类该动 态创建的程序集称为App_WebReferencesxxxdll其中xxx是一个随机的字符序
列
文件夹名称
文件类型
注 释
Bin
dll
包含应用程序所需的任何预生成的程序集
App_Browsers
browser
包含应用程序特有的浏览器定义文件ASPNET用它来识别各浏览器及确定它们的功能
App_Code
csvbxsd自定义的文件类型
包含作为应用程序的一部分编译的类的源文件当页面被请求时ASPNET编译该文件夹
中的代码该文件夹中的代码在应用程序中自动地被引用
App_Data
mdbmdfxml
包含Microsoft Office Access和SQL Express文件以及XML文件或其他数据存储
App_GlobalResources
resx
包含在本地化应用程序中以编程方式使用的资源文件
App_LocalResources
resx
包含页面范围的资源文件
App_Themes
skinCSSxsl附属文件
包含一组定义ASPNET页面和控件外观的文件
App_WebReferences
wsdl