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