要使用Apworks進行應用程式開發,您需要安裝Visual Studio 2012以上的版本(以下簡稱Visual Studio 2012+),從Apworks 2.5開始,需要Micrsoft.NET Framework 4.5的支援,因此強烈建議使用Visual Studio 2012+進行開發。
獲取原始碼
要獲得最新版本的程式碼,請使用下面的命令獲取:
git clone https://github.com/daxnet/Apworks
您也可以直接開啟Apworks的首頁以線上瀏覽原始碼,或者獲取Apworks的最新資訊。Apworks的首頁地址為:http://www.github.com/daxnet/Apworks。
注意:對於2.5.4563.21309之前的版本,可以到http://apworks.codeplex.com下載對應版本的原始碼,但這部分程式碼已經過時,因此不建議使用。
從原始碼編譯
開發人員可以在下載完最新版本的程式碼後,直接使用Visual Studio 2012+開啟解決方案檔案Apworks.sln,然後使用Visual Studio進行編譯,也可以使用程式碼庫中自帶的編譯命令,從命令列進行編譯。
使用Visual Studio 2012+編譯原始碼
在使用Visual Studio編譯Apworks的原始碼之前,請先確保Visual Studio已經安裝了NuGet Package Manager,並在選項視窗中開啟了Package Restore的選項。這是因為,為了減小程式碼庫的大小,在提交Apworks程式碼的時候,並沒有將其所需的第三方程式集全部簽入到程式碼庫中,而是借用了NuGet Package Manager的Package Restore功能。使用NuGet來管理Apworks的程式集引用的另一個好處是,使得今後Apworks類庫包的釋出變得非常簡單。
因此,請確保下圖所示的選項已經開啟:
使用Visual Studio開啟Apworks.sln解決方案檔案後,可立即編譯,此時IDE會分析各個專案與程式集之間的依賴關係,並根據這些分析結果從NuGet Package站點上下載丟失的第三方程式集,然後對專案進行編譯。
由於整個Apworks框架並沒有牽涉到32位/64位的PInvoke問題,因此不存在不同CPU架構之分,所有的編譯都是基於Any CPU的架構。
從配置管理器中我們可以看到,目前整個Apworks框架的編譯支援以下幾種配置:
- CoreDebug:以Debug方式僅編譯Apworks框架的核心庫,不編譯單體測試專案,編譯結果將輸出到bin\Debug資料夾下。通常用這種方式產生可供除錯的Apworks程式集
- CoreRelease:以Release方式僅編譯Apworks框架的核心庫,不編譯單體測試專案,編譯結果將輸出到bin\Release資料夾下。通常用這種方式產生Apworks程式集的最終版本
- Debug:以Debug方式編譯所有專案,需要進行單體測試時,就應該以此配置進行編譯。編譯結果將輸出到每個專案各自的bin\Debug資料夾下
- MonoDebug:供Mono開發環境使用的Debug編譯配置,可以在MonoDevelop或者xbuild中使用,編譯結果將輸出到bin\Debug資料夾下
- MonoRelease:供Mono開發環境使用的Release編譯配置,可以在MonoDevelop或者xbuild中使用,編譯結果將輸出到bin\Release資料夾下
- Release:以Release方式編譯所有專案。編譯結果將輸出到每個專案各自的bin\Release資料夾下
注意:僅有Release的相關配置才會產生XML文件檔案,Debug相關的配置不會產生XML文件檔案。
從命令列編譯原始碼
在Windows系統中,開啟Visual Studio的命令列工具。對於Visual Studio 2013,需要在“開始”選單中找到Visual Studio 2013下Visual Studio Tools資料夾,然後在開啟的資料夾中執行Developer Command Prompt for VS2013快捷方式:
在命令提示符中,進入Apworks程式碼庫的主目錄,然後執行build.bat來編譯原始碼:
- 要以Debug配置對原始碼編譯,請執行以下命令,編譯結果會輸出到bin\Debug資料夾:build.bat Debug
- 要以Release配置對原始碼編譯,請執行以下命令,編譯結果會輸出到bin\Release資料夾:build.bat Release
注意:由於Linux下NuGet Package Manager使用比較困難,因此這些第三方程式集都被打包成tar或者gz包並儲存在檔案伺服器上。在Linux下使用build.sh來編譯原始碼時,build.sh會首先到檔案伺服器上下載並解壓縮這些第三方程式集,然後對原始碼進行編譯。但由於近期檔案伺服器不可用,因此暫時還無法直接在Linux下對原始碼進行直接編譯。
在Visual Studio中使用Apworks程式集
Apworks通過NuGet Package Manager釋出,因此,要在Visual Studio 2012+中使用Apworks,首先應當確保Visual Studio中已經安裝了NuGet擴充套件。在需要使用Apworks程式集的專案上,單擊滑鼠右鍵,選擇Manage NuGet Packages選項:
此時會彈出Manage NuGet Packages對話方塊:
在對話方塊的“搜尋”文字框中,輸入“Apworks”,此時,對話方塊中將列出所有與Apworks相關的Packages:
選中需要安裝的Apworks元件,然後單擊Install按鈕將元件及其依賴元件安裝到專案中。
Apworks框架通過NuGet Package Repository向開發人員提供以下元件:
- Apworks:Apworks框架的核心元件。所有Apworks相關的其它元件都依賴於該元件
- Apworks Entity Framework Repository:基於Microsoft ADO.NET Entity Framework實現的倉儲元件
- Apworks MongoDB Repository:基於MongoDB的倉儲元件
- Apworks NHibernate Repository:基於NHibernate實現的倉儲元件
- Apworks Unity Object Container:基於Microsoft Patterns & Practices Unity實現的IoC容器元件
- Apworks General Storage:基於SQL Server或者OleDB實現的資料訪問元件
- Apworks MySQL Storage:基於MySQL實現的資料訪問元件
- Apworks MSMQ Bus:基於MSMQ實現的訊息匯流排元件
- Apworks Event Aggregator Bus:基於事件聚合器的訊息匯流排元件
- Apworks Direct Bus Implementation:一個簡單的訊息匯流排的實現,傳送到匯流排上的訊息會立刻派發給已註冊的訊息處理器,僅供實驗和學習使用。該元件將在後續版本中淘汰
- Apworks General Event Storage:基於SQL Server或者OleDB實現的事件儲存(Event Store)元件(將用於CQRS架構)
- Apworks MySQL Event Storage:基於MySQL的事件儲存元件(將用於CQRS架構)
在向專案新增了所需的Apworks元件後,會在解決方案目錄下的packages目錄中產生如下目錄結構,Apworks相關的程式集會被下載到這些目錄中:
在下一篇文章中,我將介紹Apworks框架對測試驅動開發和持續整合,以及對各種現有流行框架的支援。