学习:ASP.NET中App_Code,App_Data等文件夹的作用(转)
1.? Bin文件夾
Bin文件夾包含應(yīng)用程序所需的,用于控件、組件或者需要引用的任何其他代碼的可部署程序集。該目錄中存在的任何.dll文? 件將自動(dòng)地鏈接到應(yīng)用程序。
2.? App_Browser文件夾
該可選的文件夾包含.browser文件。.browser文件描述瀏覽器(不管是移動(dòng)設(shè)備瀏覽器,還是臺(tái)式機(jī)瀏覽器)的特? 征和功能。
注:控件重寫(xiě)可以放到這里CSSFriendlyAdapters
3.? App_Code文件夾
App_Code文件夾正好在Web應(yīng)用程序根目錄下,其存儲(chǔ)所有應(yīng)當(dāng)作為應(yīng)用程序的一部分動(dòng)態(tài)編譯的類(lèi)文件。這些類(lèi)文件自? 動(dòng)鏈接到應(yīng)用程序,而不需要在頁(yè)面中添加任何顯式指令或聲明來(lái)創(chuàng)建依賴(lài)性。App_Code文件夾中放置的類(lèi)文件可以包含任何可識(shí)別的ASP.NET組 件? ——自定義控件、輔助類(lèi)、build提供程序、業(yè)務(wù)類(lèi)、自定義提供程序、HTTP處理程序等。
??? 注意????在開(kāi)發(fā)時(shí),對(duì)App_Code文件夾的更改會(huì)導(dǎo)致整個(gè)應(yīng) 用程序重新編譯。對(duì)于大型項(xiàng)目,這可能不受歡迎,而且很耗時(shí)。為此,鼓勵(lì)大家將代碼進(jìn)行模塊化處理? 到不同的類(lèi)庫(kù)中,按邏輯上相關(guān)的類(lèi)集合進(jìn)行組織。應(yīng)用程序?qū)S玫妮o助類(lèi)大多應(yīng)當(dāng)放置在App_Code文件夾中。
App_Code文件夾中存放的所有類(lèi)文件應(yīng)當(dāng)使用相同的語(yǔ)言。如果類(lèi)文件使用兩種或多種語(yǔ)言編寫(xiě),則必須創(chuàng)建特定語(yǔ)言的子目錄,以包含用每種語(yǔ)言編寫(xiě)的類(lèi)。一旦根據(jù)語(yǔ)言組織這些類(lèi)文件,就要在web.config文件中為每個(gè)子目錄添加一個(gè)設(shè)置:
<compilation>
<codeSubDirectories>
<add? directoryName="VBFolder"? />
</codeSubDirectories>
</compilation>
重要的是,特定語(yǔ)言的子目錄應(yīng)在web.config文件中注冊(cè),否則,不管它們屬于哪個(gè)文件夾,App_Code文件夾下? 的所有文件將被編譯成一個(gè)單獨(dú)的程序集。上述配置腳本描述了這么一種情況,即所有的C#文件都放在App_Code文件夾的根目錄下,而把幾個(gè)? Visual? Basic? .NET類(lèi)文件移入VBFolder目錄中。如果<codeSubDirectories>節(jié)中提到的目錄不存在,則會(huì)收到一個(gè)編譯錯(cuò)誤提? 示。
App_Code根文件夾中的文件被編譯成App_Code_xxx.dll程序集,其中xxx是隨機(jī)生成的字符序列。一個(gè)? 給定子目錄中的文件將被編譯成一個(gè)名為App_SubCode_xxx_yyy.dll的動(dòng)態(tài)創(chuàng)建的程序集,其中xxx指示子目錄的名稱(chēng),而yyy是一 個(gè)? 隨機(jī)字符序列。只有在應(yīng)用程序根目錄中的web.config文件中進(jìn)行了設(shè)置,<codeSubDirectories>節(jié)才有效。
在App_Code目錄或任何其他子目錄中放置一個(gè)assemblyinfo.cs文件,可以創(chuàng)建一個(gè)強(qiáng)命名的程序集。顯然,如果該文件夾包含 Visual? Basic? .NET文件,那么將使用assemblyinfo.vb文件。程序集配置文件可以引用一個(gè).snk文件來(lái)保存強(qiáng)名稱(chēng)的密鑰。
? 注意? ? ? ? 給一個(gè)程序集設(shè)置一個(gè)強(qiáng)名稱(chēng),首先必須獲得一個(gè)公開(kāi)/私有密鑰對(duì)。通過(guò)使用強(qiáng)名稱(chēng)(Strong? Name)工具(sn.exe),可以獲得這樣一個(gè)密鑰對(duì)。強(qiáng)名稱(chēng)工具是我們可以在.NET? Framework的安裝路徑中發(fā)現(xiàn)的SDK? binary之一。密鑰對(duì)文件通常有一個(gè).snk擴(kuò)展名。可以將該文件保存到一個(gè)應(yīng)用程序文件夾中,并在assemblyinfo.cs文件中引用它,如 下所示:
? ? ? ? ? ? [assembly:? AssemblyKeyFileAttribute(@"yourKeyPair.snk")]
注意,Visual? Basic? .NET是在包含Visual? Studio? Solution的目錄中尋找密鑰文件,而C#編譯器則在包含該binary的目錄中尋找密鑰文件。據(jù)此可知,用此屬性調(diào)整我們使用的路徑,或者把密鑰文件放在合適的文件夾中。
在隨后發(fā)生的任何重新生成中,程序集的名稱(chēng)將發(fā)生變化。同時(shí),老的AppDomain請(qǐng)求一結(jié)束,就刪除老的程序集。
App_Code文件夾并非只能包含類(lèi)文件。特別是,它可以包含并能自動(dòng)地處 理代表數(shù)據(jù)架構(gòu)的XSD文件。把一個(gè)XSD文件? 添加到該文件夾中時(shí),編譯器將把它解析成一個(gè)有類(lèi)型的DataSet類(lèi),并將它添加到應(yīng)用程序作用域中。在ASP.NET? 1.x中,這一工作由Visual? Studio? .NET向?qū)?#xff0c;使用一個(gè)命令行實(shí)用程序(xsd.exe)完成的。
? ? 注意? ? ? ? 使用web.config文件注冊(cè)一個(gè)組件(例如,一個(gè)自定義的服務(wù)器控件或一個(gè)自定義的HTTP處理程序)時(shí),通常要求指定包含該代碼的程序集名稱(chēng)。 如? 果該組件定義在App_Code文件夾中,則應(yīng)該用什么名稱(chēng)來(lái)指示程序集?在這種情況下,只是忽略程序集信息,并規(guī)定完整的類(lèi)名即可。如果沒(méi)有規(guī)定任何 程? 序集,則ASP.NET運(yùn)行庫(kù)將試圖從任何已裝載的程序集中裝入該類(lèi),包括為App_Code文件夾動(dòng)態(tài)創(chuàng)建的程序集。
4.? App_Data文件夾
App_Data文件夾應(yīng)該包含應(yīng)用程序的本地?cái)?shù)據(jù)存儲(chǔ)。它通常以文件(諸如Microsoft? Access或Microsoft? SQL? Server? Express數(shù)據(jù)庫(kù)、XML文件、文本文件以及應(yīng)用程序支持的任何其他文件)形式包含數(shù)據(jù)存儲(chǔ)。該文件夾內(nèi)容不由ASP.NET處理。該文件夾是 ASP.NET提供程序存儲(chǔ)自身數(shù)據(jù)的默認(rèn)位置。
? 注意? ? ? ? 默認(rèn)ASP.NET帳戶(hù)被授予對(duì)文件夾的完全訪(fǎng)問(wèn)權(quán)限。如果碰巧要改變ASP.NET帳戶(hù),一定要確保新帳戶(hù)被授予對(duì)該文件夾的讀/寫(xiě)訪(fǎng)問(wèn)權(quán)。
5.? App_GlobalResources文件夾
6.? App_LocalResources文件夾
7.? App_Themes文件夾
App_Themes文件夾為ASP.NET控件定義主題。主題包含在App_Themes文件夾下的一個(gè)文件夾。根據(jù)定義,一個(gè)主題是一組帶有樣式信息的文件。主題文件夾中的文件內(nèi)容被編譯,以生成一個(gè)類(lèi),而該類(lèi)被頁(yè)面調(diào)用以編程的方式設(shè)置主題化控件的樣式。
App_Themes文件夾列出應(yīng)用程序的本地主題。? 應(yīng)用程序還可以繼承如下文件夾中定義的全局主題:
%WINDOWS%\Microsoft.NET\Framework\[version]\ASP.NETClientFiles\Themes
從編譯的角度看,全局主題和局部主題沒(méi)有區(qū)別。如果一個(gè)給定名稱(chēng)的主題,既存在應(yīng)用程序的本地主題,又存在服務(wù)器機(jī)器的全局主題,則本地主題優(yōu)先適用。
8.? App_WebReferences文件夾
在Visual? Studio? .NET? 2003中,一個(gè)需要訪(fǎng)問(wèn)Web服務(wù)的ASP.NET應(yīng)用程序,將通過(guò)“添加Web引用”對(duì)話(huà)框獲得相應(yīng)的.wsdl文件。Web服務(wù)的 WSDL(Web? Service? Description? Language)文檔,對(duì)于從頁(yè)面使用Web服務(wù)是不夠的。ASP.NET頁(yè)面最終是一個(gè)托管類(lèi),并且需要與另一個(gè)托管類(lèi)通信。因此,Web服務(wù)被一 個(gè)? 代理類(lèi)所包裝。該代理類(lèi)是由Visual? Studio使用命令行工具wsdl.exe的服務(wù)創(chuàng)建的。該代理類(lèi)盡量包含與Web服務(wù)商的Web方法一樣多的方法,并且它結(jié)合了Web服務(wù)的公共接 口? 定義的任何自定義的數(shù)據(jù)類(lèi)型。
這個(gè)操作不需要開(kāi)發(fā)人員付出很大的代價(jià)。然而,開(kāi)發(fā)人員顯然要依賴(lài)于Visual? Studio來(lái)生成代理類(lèi)。如果能夠直接把.wsdl文件放在應(yīng)用程序的目錄樹(shù)的某個(gè)地方,并讓ASP.NET處理其余的任務(wù),這樣不是更容易、更簡(jiǎn)單? 嗎?這正好是App_WebReferences文件夾要做的事情。
它識(shí)別那些用來(lái)描述所綁定的Web服務(wù)的.wsdl文件,并生成運(yùn)行時(shí)代理類(lèi),以便ASP.NET頁(yè)面能夠以類(lèi)型安全的方式? 放置對(duì)Web服務(wù)的調(diào)用。App_WebReferences文件夾可以包含子文件夾。子文件夾的名稱(chēng)驅(qū)動(dòng)最后所得到的代理類(lèi)的命名空間,而WSDL文 件? 定義類(lèi)名。例如,samples.wsdl文件和ProsAspNet20子文件夾將創(chuàng)建一個(gè)稱(chēng)為ProAspNet20.Samples的代理類(lèi)。該 動(dòng)? 態(tài)創(chuàng)建的程序集稱(chēng)為App_WebReferences.xxx.dll,其中xxx是一個(gè)隨機(jī)的字符序列。
文件夾名稱(chēng)
? 文件類(lèi)型
? 注? ? ? ? 釋
?
Bin
? .dll
? 包含應(yīng)用程序所需的任何預(yù)生成的程序集
?
App_Browsers
? .browser
? 包含應(yīng)用程序特有的瀏覽器定義文件,ASP.NET用它來(lái)識(shí)別各瀏覽器及確定它們的功能
?
App_Code
? .cs、.vb、.xsd、自定義的文件類(lèi)型
? 包含作為應(yīng)用程序的一部分編譯的類(lèi)的源文件。當(dāng)頁(yè)面被請(qǐng)求時(shí),ASP.NET編譯該文件夾中的代碼。該文件夾中的代碼在應(yīng)用程序中自動(dòng)地被引用
?
App_Data
? .mdb、.mdf、.xml
? 包含Microsoft? Office? Access和SQL? Express文件以及XML文件或其他數(shù)據(jù)存儲(chǔ)
?
App_GlobalResources
? .resx
? 包含在本地化應(yīng)用程序中以編程方式使用的資源文件
?
App_LocalResources
? .resx
? 包含頁(yè)面范圍的資源文件
?
App_Themes
? .skin、.CSS、.xsl、附屬文件
? 包含一組定義ASP.NET頁(yè)面和控件外觀的文件
?
App_WebReferences
? .wsdl
? 包含用以生成代理類(lèi)的WSDL文件,以及與在應(yīng)用程序中使用Web服務(wù)有關(guān)的其他文件
文章來(lái)源:http://www.cnblogs.com/purplefox2008/archive/2009/11/01/1593882.html
轉(zhuǎn)載于:https://www.cnblogs.com/LeimOO/archive/2009/11/05/1596832.html
總結(jié)
以上是生活随笔為你收集整理的学习:ASP.NET中App_Code,App_Data等文件夹的作用(转)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 《Ext JS高级程序设计》节选: 一个
- 下一篇: Indy10收发Hotmail邮件