VisualStudio 編譯檔案的小技巧
最近有個手機專案,需要把APP分成DEV和UAT。
windows phone 的 app都是根據 WMAppManifest.xml 內的 ProductID 做區分,
所以要在手機裡同時有 DEV 和 UAT 的 APP,就必須有不同的WMAppManifest.xml ,
身為一個懶散的工程師,是千萬不會想要手動改的!
接下來就來試試看要怎麼設定!!
首先在 Solution 上點滑鼠右鍵,選擇 Properties 項目
點選左邊 Configuration Properties ,這樣右上角的 Configuration Manager 就可以點選,
點了之後會出現 Configuration Manager 對話框
左上角下拉選單選擇 <New...> ,會出現 New Solution Configuration 對話框,
名字取UAT,然後 Copy setting from 懶得自己改的話就直接選 Debug 了,決定之後按 OK
這樣在編譯選項就會出現剛剛增加的 UAT 項目
DEV 也用一樣的方式產生出來,
再來我們要準備幾個檔案,
在專案的 Properties 資料夾內複製三個 WMAppManifest.xml 用來當作 UAT,DEV 以及其他專用,
名字就取 WMAppManifest_UAT.xml 、WMAppManifest_DEV.xml 、WMAppManifest_Base.xml 。
當然,要修改一下內容,
上面是原本的 WMAppManifest.xml ,App 名稱是 Wp8, 下面是 UAT 用的,除了 App 名稱改成 Wp8 UAT 之外,ProductID 也改變了號碼,
這幾個 WMAppManifest_XXX.xml 檔案不用加到專案中。
接著在專案的 Properties 內的 Build Events 裡有兩個 command line 可以加入,
上面的 Pre-build event command line 是編譯前會執行,下面就是編譯後執行
讓我們在編譯前執行以下指令
del "$(ProjectDir)Properties\WMAppManifest.xml"
if "DEV"=="$(ConfigurationName)" (
copy "$(ProjectDir)Properties\WMAppManifest_DEV.xml" "$(ProjectDir)Properties\WMAppManifest.xml"
) else if "UAT"=="$(ConfigurationName)" (
copy "$(ProjectDir)Properties\WMAppManifest_UAT.xml" "$(ProjectDir)Properties\WMAppManifest.xml"
) else (
copy "$(ProjectDir)Properties\WMAppManifest_Base.xml" "$(ProjectDir)Properties\WMAppManifest.xml"
)
他會在編譯前先把 WMAppManifest.xml 檔案刪掉,然後根據現在編譯的設定複製相對應的 WMAppManifest.xml 檔案。
如此就可以根據編譯的設定檔來決定產生的是 UAT 版本還是 DEV 版本了。
最後,如果這兩個版本都要交給客戶,那麼在 Post-build event command line 內執行
del "$(TargetDir)Wp8_$(ConfigurationName).xap"
copy "$(TargetDir)Wp8.xap" "$(TargetDir)Wp8_$(ConfigurationName).xap"
即可在編譯產生 xap 檔之後另外複製出 DEV 或 UAT 的檔案,給客戶的時候也不用改名字拉,多方便啊!