了解 Universal Apps 的方案結構與共用的兩個面向
Universal Apps 方案預設有三個專案 (1) Windows Apps (2) Windows Phone Apps (3) Shared, 如下圖所示
這三個專案裡面只有 Windows 和 Windows Phone 的專案會輸出二進位檔, 但 Shared 專案是不會輸出二進位檔的, 意思就是說 Shared 專案無法獨立被編譯, 它也不會產生 exe 或 dll 之類的二進位輸出檔.
所以 Universal Apps 是如何編譯的, 其實他在編譯的行為是先將 Windows 和 Shared 專案的所有檔案合併在一起然後編譯成 Windows Apps 的二進位檔 (事實上你會得到一個 exe 檔); Windows Phone 也是一樣, 在編譯時將 Windows Phone 和 Shared 專案所有的檔案合併後才進行編譯, 所以三個專案會得到兩個二進位輸出檔.
有了對方案結構的基本了解後, 我們來聊聊『共用的兩個面向』, 在我進行前面一篇文章 [Universal Apps] 共用 Basic Page 的範本 中的範本建立與修改時, 不斷地在思索『Universal Apps 中共用的意義為何?』. 我發現共用這件事是有兩個面向的意義, 你沒看錯, 的確有兩個意義, 待我細細說明.
1. 共用檔案
Universal Apps 中共用的意義大家最容易理解的就是共用檔案, 也就是我們在 Shared 專案中建立或加入某些檔案, 如 xaml, cs, 圖檔, 文字檔 等等, 讓 Windows 專案和 Windows Phone 專案在編譯時會取用同樣的檔案來合併. 這個行為很容易理解, 大部分提到共用時, 這也是最直覺的方式. 在我前一篇文章的範本中, MainPage.xaml 就是屬於此類.
2. 共用命名
這個共用的意義就不是那麼的直覺了, 但我認為這也是共用的一種方式, 這種方式的呈現乃在於分別於 Windows 與 Windows Phone 專案建立檔案, 但使用相同的命名方式, 如相同的檔案名稱, 相同的類別全名, 相同的樣式 (Style)鍵值, 而使得在 Shared 中的程式碼或 xaml 能夠使用相同的命名定義兩個分屬在不同專案的物體. 在我前一篇文章的範本中, PageTitleControl.xaml 與 DefaultResources.xaml 就是屬於共用命名的類型.
所以『共用』這件事並不是狹隘的只有共用檔案這樣的定義, 當我們深入理解共用的兩個面向時, 就能更靈活地在 Universal Apps 方案中應用這兩個面向的技巧, 不僅對於開發的速度有幫助, 更可以針對平台特性發揮其專長.