使用Visual Studio開發軟體項目時,透過Visual Studio所提供的方案總管,可以很方便的管理程式碼與相關資源。方案總管中每個軟體項目的程式碼檔案會以樹狀結構的方式來呈現,這個樹狀結構主要是依照實體目錄路徑、實體檔案路徑來做為呈現的參考。
隨著時代的演化,單純依照實體目錄路徑、實體檔案路徑來做為樹狀結構呈現的參考,已經慢慢跟不上開發上的需求。例如說,軟體項目裡一個ASP.NET網頁,就包含了開發人員撰寫的.aspx、.cs以及系統產生的.designer.cs三個程式碼檔案。這時方案總管上如果單純依照上列規則來呈現,可以預期到,當項目內ASP.NET網頁越來越多的時候,方案總管內會被滿滿的程式碼檔案列表所淹沒,進而影響開發人員尋找程式碼檔案的效率。
Visual Studio的方案總管為了更方便的管理程式碼與相關資源,在軟體項目的專案檔(.csproj)裡加入了,定義檔案與檔案之間父子關係的功能。有了這個功能,方案總管在以樹狀結構來呈現程式碼檔案的時候,就能透過父子關係的定義來做為呈現的參考,用來加強程式碼檔案收納歸類的能力,進而提高開發人員尋找程式碼檔案的效率。
例如下列範例是一個ASP.NET應用程式專案檔的內容節錄,這段內容主要是定義項目內包含了三個檔案:WebForm1.aspx、WebForm1.aspx.cs、WebForm1.aspx.designer.cs,其中WebForm1.aspx.cs、WebForm1.aspx.designer.cs這兩個檔案依賴於WebForm1.aspx,換個角度說也就是:WebForm1.aspx是另外兩個程式碼檔案的父檔案。項目檔的內容中有了這個父子關係的定義,在方案總管上的呈現,就會是開發人員熟悉的WebForm1.aspx檔案下有.cs、.designer.cs兩個檔案。
<ItemGroup> <Content Include="WebForm1.aspx" /></ItemGroup><ItemGroup> <Compile Include="WebForm1.aspx.cs"> <DependentUpon>WebForm1.aspx</DependentUpon> </Compile> <Compile Include="WebForm1.aspx.designer.cs"> <DependentUpon>WebForm1.aspx</DependentUpon> </Compile></ItemGroup>
在原生狀態下,Visual Studio IDE並不提供檔案與檔案之間父子關係的編輯功能,開發人員在加入新項目到軟體項目時,只能使用預設的父子關係定義。例如:在WPF軟體項目中加入新的WPF視窗,IDE會加入.xaml與.cs兩個程式碼檔案,並且定義.xaml是.cs的的父檔案。
開發人員如果需要自訂檔案與檔案之間父子關係,最快的方式就是使用記事本開啟項目檔(.csproj)來做修改,不過這個方式很容易改錯、並且非常的不人性化,不建議開發人員採用這個解決方案。比較建議的方式是安裝擴充套件,例如:「VSCommands for Visual Studio 2012」套件,這個套件為Visual Studio擴充了許多的功能,其中一個功能就是:提供檔案與檔案之間父子關係的編輯功能。
接下來的範例內容,就介紹如何透過「VSCommands for Visual Studio 2012」這個套件提供的功能,來編輯檔案與檔案之間父子關係。
1.範例是一個ASP.NET應用程式,在這個軟體項目裡,包含了一個WebForm以及這個WebForm專用的CSS檔案。
2.在Visual Studio的方案總管中,選取WebForm1.aspx、WebForm1.aspx.css這兩個檔案並且按下滑鼠右鍵。這時如果已經安裝「VSCommands for Visual Studio 2012」,可以在選單中看到Group Items這個選項,接著點擊這個選項。
3.接著VS會提供一個對話方塊,條列上一個步驟選擇的檔案,並且要求開發人員選擇哪個檔案是父檔案(其餘檔案就是子檔案)。這時選擇WebForm1.aspx並且按下Ok按鈕。
4.經由上列三個步驟,就完成了WebForm1.aspx、WebForm1.aspx.css這兩個之間父子關係的編輯。在方案總管中可以觀察到WebForm1.aspx.css已經被歸類在WebForm1.aspx之下,並且可以被折迭隱藏讓整個項目變的更加清爽。
本文的最後要來大推一下Demo佛心建立的Best Gallery | demo小鋪。這個網站介紹了許多實用的Visual Studio的套件,其中許多套件都能讓開發工作更加輕鬆、更加的有效率,使用VS2010和VS2012 做為謀生工具的開發人員千萬不要錯過了。:D