轉(zhuǎn)帖|其它|編輯:郝浩|2011-01-10 17:33:40.000|閱讀 449 次
概述:在一個Web應(yīng)用中,當(dāng)你添加一個Web頁面的時候,VS實際上會為你創(chuàng)建三個文件:Xxx.aspx, Xxx.aspx.cs和Xxx.aspx.designer.cs,后面兩個文件(依賴文件)依賴于第一個文件(主文件)。依賴文件嵌套在主文件下,在結(jié)構(gòu)上看起來非常的清晰。那么你是否可以把存在于同一個目錄下的兩個相關(guān)的文件也建立這種依賴關(guān)系呢?
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
在一個Web應(yīng)用中,當(dāng)你添加一個Web頁面的時候,VS實際上會為你創(chuàng)建三個文件:Xxx.aspx, Xxx.aspx.cs和Xxx.aspx.designer.cs,后面兩個文件(依賴文件)依賴于第一個文件(主文件)。依賴文件嵌套在主文件下,在結(jié)構(gòu)上看起來非常的清晰。那么你是否可以把存在于同一個目錄下的兩個相關(guān)的文件也建立這種依賴關(guān)系呢?
一、文件依賴達(dá)到的效果
對于項目文件之間的依賴關(guān)系,包含HTML的.aspx文件和包含Code Behind的.cs(或者.vb)文件是我們遇到的最為常見的表現(xiàn)形式。實際上還有其他的表現(xiàn)形式,比如資源文件(.resx文件)和自動生成的代碼文件,Windows窗體文件和基于該窗體的資源文件(.resx)等。在創(chuàng)建這些文件的時候,VS會默認(rèn)為你創(chuàng)建一套具有依賴關(guān)系的文件。
除了這種VS自動支持的文件依賴之外,有的時候我們需要手工為添加在同一個目錄下的兩個文件建立依賴關(guān)系。比如如果我們采用MVP模式進(jìn)行開發(fā)的時候,建立一個View的時候,往往需要為之創(chuàng)建一個Presenter。在默認(rèn)的情況下,View和Presenter在VS中處于同一個級別,如果能夠建立起它們之間的依賴關(guān)系,讓Presenter文件嵌套在View文件下,在結(jié)構(gòu)上將顯得更加清晰(如左圖所示)。
再舉一個例子,在《如何讓ASP.NET默認(rèn)的資源編程方式支持非.ResX資源存儲》一文中,我提供了一種通過自定義ResourceProvider讓ASP.NET默認(rèn)的資源編成模式支持不同形式的資源存儲形式。現(xiàn)在我們?yōu)榱藢崿F(xiàn)本地化的需要,需要為每一個.aspx創(chuàng)建基于不同語言文化的資源文件,假設(shè)我們采用XML文件。如果我們能夠讓這些資源文件作為.aspx文件的依賴文件,那么它們顯示在Solution Explorer中就會呈現(xiàn)出一種層級關(guān)系,看起來會顯得結(jié)構(gòu)清晰(如右圖所示)。
具有依賴關(guān)系的文件之間除了顯示效果之外還具有一些額外的屬性,比如當(dāng)你刪除主文件的時候,所有的依賴文件都會自動被刪除;當(dāng)你使用TFS作為Source Control的時候,簽出主文件的同時也會將所有依賴文件全部簽出。
二、文件依賴關(guān)系定義在Project文件中
在目錄結(jié)構(gòu)來講,主文件和依賴文件處于相同的層級,它們的依賴關(guān)系實際上是通過Project文件(.csproj文件或者.vbproj文件)來定義的。Project文件本質(zhì)上就是一個XML文件,所有包含在項目中的文件在<ItemGroup>元素下具有一個子元素。一般來說,需要編譯的文件(比如.cs或者.vb文件)以一個<Compile/>元素表示,其它的則表示成<Content/>元素。而某個文件具體依賴于哪個文件,通過子元素<DependentUpon/>定義。比如說針對上圖所示的文件結(jié)構(gòu),三個資源文件(Default.aspx.xml、Default.aspx.en-US.xml和Default.aspx.zh-CN.xml)以來于Default.aspx,這樣的依賴關(guān)系體現(xiàn)在如下所示的Project文件中。
1: <?xml version="1.0" encoding="utf-8"?>
2: <Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="//schemas.microsoft.com/developer/msbuild/2003">
3: <!--Other Content-->
4: <ItemGroup>
5: <Content Include="Default.aspx" />
6: <Content Include="Default.aspx.xml">
7: <DependentUpon>Default.aspx</DependentUpon>
8: </Content>
9: <Content Include="Default.aspx.en-US.xml">
10: <DependentUpon>Default.aspx</DependentUpon>
11: </Content>
12: <Content Include="Default.aspx.zh-CN.xml">
13: <DependentUpon>Default.aspx</DependentUpon>
14: </Content>
15: </ItemGroup>
16: <!--Other Content-->
17: </Project>
換句話說,如果你需要兩個文件具有依賴創(chuàng)建,通過修改對應(yīng).csproj文件(或者.vbproj文件)完全可以達(dá)到你的目的。但是這樣的方式在操作性上是極不方便的,那么是否具有更好的方法呢?
三、通過VS插件建立兩個文件之間的依賴關(guān)系
實際上,關(guān)于方便建立兩個項目文件之間的依賴關(guān)系,網(wǎng)上有很多開源的VS插件。如果你對VS擴(kuò)展開發(fā)比較熟悉,你甚至可以自己開發(fā)。由于我對此一竅不通,所以只能尋找現(xiàn)有的工具,我發(fā)現(xiàn)有一款叫作IStaySharp.CreateDependency的工具不錯。IStaySharp.CreateDependency提供了一個VS宏,你將它加載到VS中,基于此創(chuàng)建對應(yīng)的工具欄命令。然后再Solution Exploror選擇兩個項目文件,點擊該工具欄按鈕即可。
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉(zhuǎn)載自:網(wǎng)絡(luò)轉(zhuǎn)載