標籤:
通用的樣本說明:
- 本系列部落格只討論工具的基礎,不討論任何語言。
- IDE預設指代的是Visual Studio 2013 Community Edition。 本系列文章的結尾,你可以熟練地使用它寫程式。
- 將Visual Studio啟動後的預設布局狀態稱為主視窗,主視窗標題列中顯示的項目名稱不必要。
- 在日常口語和Windows資源管理員的基礎上定義了幾個描述菜單操作的符號:[]、{}、/、>>、=、(,)。
- 檢查一個設定項的表示方法為:
- [視窗名稱]/{菜單名稱}/{子功能表名稱}/{設定項項名稱}=設定項的值
- 例如預設的Debug配置:
- 檢查多個設定項時,按照單個設定項的方式,逐一寫出
- 檢查一個設定項有多個值的時候,用括弧包括並用內部的逗號分隔,如:
- [方案總管]/{項目名稱}/{引用}=(System,System.Core,System.Data,System.Xml)
- 執行一個左鍵單擊序列,就是將最後的檢查項換成”/”,例如退出IDE:
- 右鍵菜單的串連符號為>>,例如重新整理Windows案頭:
- 快顯視窗中的設定項的表示與上類似
- MDI子視窗中設定項的表示與上類似,注意到在Visual Studio中,MDI子視窗的名稱在它的左上方或者可能自動吸附到主視窗的四周
- 標題列和狀態列作為菜單的推廣,適用於上述表示方法
- 缺陷說明
- 歡迎反饋,mailto:[email protected]
- 作者的慣用語言是C#
- 作者是軟狗
- 作者的IDE沒裝中文語言套件,所以有的名詞翻譯得不準確:-(
- 由於還沒有釐清相關的認證問題,著作權保留
- 系列文章沒有提出或解決新的問題,目的只是科普
本文
在Visual Studio(以下簡稱IDE)當中,存在兩個很微妙的專用名詞”項目(project)”和”解決方案(solution)”。這兩個概念對於我們組織工作有怎樣的啟示呢?
首先,從
目錄結構的特點來認識Visual Studio。
當我們以空白環境啟動IDE後,通過
[主視窗]/{檔案}/{建立}/{項目}/,可以呼出[建立項目]視窗。
在[建立項目]視窗中任意選擇一個項目模板,由於預設有
[建立項目]/{解決方案}=建立新的解決方案,
因此在完成建立項目後,在[方案總管]中出現了一個解決方案內含有一個項目的情況。
此時,
[方案總管]/{項目名}>>{在Windows資源管理員中開啟}/,
可以看到這個項目具有獨立的輸出目錄:bin目錄,其中的Debug檔案夾就是項目的輸出目標。
回到主視窗,
[主視窗]/{建立項目}/得到[建立項目],
再建一個項目附加到當前解決方案,
[建立項目]/{解決方案}=添加到當前解決方案。
此時,觀察目錄結構是
很顯然,這樣的設計哲學呈現的是,項目代表了某種”單元”的東西。而解決方案就是這些”單元”的集合。請試著猜想,我們對項目的引用進行添加的時候,自動產生的資訊到哪裡去了?是’解決方案.sln’還是’項目1.csproj’?
我們可以把這種特性用來組織程式的編寫工作。也就是把項目(project)作為可以複用的單元。這個單元比類進階,因為類實質就是文字文件。這個單元又比實際的應用程式低級,因為有一些項目它不產生新的.exe只產生新的.dll。其實這個等級恰恰就是常說的”模組化重用”中的模組。
第二,從
項目的引用和輸出來思考Visual Studio的組織
既然輸出是指,使用Visual Studio所做實際工作對應的新增項。那麼它可能是一個dll,也可能是一個.exe。總之,它一定是一個新增的單元。
可以提出一個簡單的問題:一個項目可以對應幾個引用項目?一個項目可以對應幾個輸出項目?一個引用項目可以對應幾個項目?一個輸出項目可以對應幾個項目?實際上通過自己編寫編譯指令碼,比如Makefile之類的東西,是可以精確掌握編譯的過程。但是很顯然,在Visual Studio當中沒有要求強制寫編譯指令碼。可以說,既然編譯過程可以自動化,那麼為什麼不利用這個好處呢?
利用這個好處的結果就是對上面問題的一種解答方式:一個項目可以引用多重專案,一個項目就是輸出一個項目(假如是Application模板,那就是一個.exe,類庫就是一個dll),而一個項目可以被其他任意多重專案引用。
藉助這樣的模組化統一思想,可以更加科學地劃分問題域,限制問題出現的範圍,有效地形成複用。
最後,從
他人的應用程式來猜測Visual Studio中的組織
以360安全衛士為例,360安全衛士很顯然對應一個”解決方案”。其主介面可以對應於IDE中的一個傳統型應用程式項目,模組化的實際功能就可以對應於IDE當中的類庫項目。同樣的理解,還可以應用於其他的應用程式。
對於應用程式的安裝包打包,實際上就是IDE當中的特殊項目:部署。
總結
一個功能豐富的應用程式很難像”Hello,World!”這樣簡單。Visual Studio提供了自動化的專案管理方法論,在其中,解決方案面向總的問題域,項目則提供了模組化的實現方式,理解並遵守這種方法論或許不能避免造輪子,但可以一定程度上避免自己始終造同一個輪子。
編程工作的組織--llorch的Visual Studio 基礎教程(一)