今天在這裡給大家介紹一個可以幫助開發者更新應用的工具 Mobilize.Net Silverlight bridge 這是一個Visual Studio的內建工具插件,可以幫助開發者将一個WPSL應用轉換成一個Windows 10 UWP應用。(此工具目前是一個預覽版是以在使用的時候還會遇到一些問題,不過即便如此大家可以先下載下傳一個嘗試一下也不會有什麼損失對吧。)
Windows UWP 既 Windows 10 Universal Windows platform,這個微軟基于Windows NT核心的個運作時(Runtime)平台,此平台橫跨所有的 Windows 10 device 例如windows10 手機、平闆、serface、以至于樹莓派這樣的嵌入式裝置。
由于一些曆史原因之前在 Windows Phone 7.x / 8.x 的應用商店中充斥着大量的 Windows Phone Silverlight(WPSL) 架構的應用,由于應用的開發架構不同,開發者們如果想把WPSL應用遷移到Windows UWP平台上以服務于更多的Windows10裝置就需要一些額外的工作量,有些開發者朋友對此很苦惱,因為有些代碼或者控件在Windows10 UWP平台已經發生了較大的變化。
首先登陸 mobilize 的網站進行下載下傳
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIyZuBnL5ATMxITO3UTL1ATM4QDOyUTM5ITOwUTMwITLxUjMzMzLclDM1EDMy8CXxUjMzMzLcd2bsJ2Lc12bj5ycn9Gbi52YuUTMwIzcldWYtl2Lc9CX6MHc0RHaiojIsJye.png)
安裝這個 MobilizeNetSilverlightBridge.msi 執行檔案
随後在你的 VisualStudio 項目屬性中會有一個 Convert to UWP 的選項
接着我們選擇好項目的輸入和輸出路徑這裡輸入的路徑要注意要使用你的UI項目因為這裡會有一些項目間的引用關系,Silverlight Bridge會自動檢測到這些引用進行分析處理一同進行轉換工作。
點選開始後會自動進行轉換随後我們可以通過 upgrade report 和 log日志 檢視轉換的過程遇到的問題和情況。
轉換以後嘗試編譯,因為這裡我用的是一個預設的Pivot模闆程式并沒有遇到問題,不過我在嘗試轉換轉換一些其他項目的時候還是遇到一些問題的,請大家在注意在轉換的時候檢視Log日志
另外我發現在轉換完成的項目中會多出一個 Helper 檔案夾,在這個項目中并沒有使用到但是從代碼上看應該是一個與應用适配相關的處理類。
接下來我嘗試分析一下這個轉換器的工作内容
首先它會更新轉換項目的 manifest 檔案這裡包括應用的名稱應用的 nuget的引用,應用圖示,Capability,declaration 等功能的遷移
其次它會幫助我們mapping Silverlight API –> WinRT API 這裡的内容相對來說就比較複雜了,這裡如果是之前應用的業務邏輯應該不牽扯太多的轉變因為畢竟都是C#,關于 Silverlight 和 WinRT 都有的 feature 的 mapping功能應該是控件級的mapping實作的代碼替換,但是由于文法的近似可以轉義大部分功能代碼,但是我也發現在轉換的時候如果是遇到 agent project的時候轉換會失敗,這應該是由于 WindowsRT 的 Background Task機制的問題,希望下一個版本會修複這個問題。
接着是XAML的 mapping 這個邏輯我覺得就更複雜了,因為 XAML的綁定邏輯都是和業務邏輯扭轉的非常緊密,并且涉及到一些頁面樣式或者控件樣式,這樣的内容失敗的幾率就會更大,但是在這裡這個工具可以幫助我們了解我們之前使用過的控件在WindowsRT中是否還支援或者應該大緻怎樣修改,至少起到了一個指引作用。
還有一個關于 Async and Await APIs 的問題因為這個Async Await是 .net 4.5 的一個新文法,有大量的SDK都改成這種異步的的文法,是以有可能涉及到方法merge的問題請開發者朋友們注意下。
最後強調的是這個bridge本身也是一個開源項目目前在Github上可以找到 傳送門 目前這個預覽版已經包括了700個作用的API映射,在十一月還将會完成更多的API映射(會達到1200個映射功能)開發者朋友不僅可以使用這個工具,而且還可以根據自己的需求進行擴充,并分享給其他開發者使用。
如果你有一個 Windows Phone Silverlight 項目那就不妨嘗試一下這個工具看看可否幫助你把應用遷移到 Windows10 UWP上來 :)