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.Net Silverlight bridge 这是一个Visual Studio的集成工具插件,可以帮助开发者将一个WPSL应用转换成一个Windows 10 UWP应用。(此工具目前是一个预览版所以在使用的时候还会遇到一些问题,不过即便如此大家可以先下载一个尝试一下也不会有什么损失对吧。)

首先登陆 mobilize 的网站进行下载

安装这个 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上来 :)

Mobilize.Net Silverlight bridge to Windows 10 UWP的更多相关文章

  1. DevExpress Windows 10 UWP Controls新版亮点

    行业领先的.NET界面控件2018年第二次重大更新——DevExpress v18.2日前正式发布,本站将以连载的形式为大家介绍新版本新功能.本文将介绍了DevExpress Windows 10 U ...

  2. DevExpress v18.1新版亮点——Windows 10 UWP篇

    用户界面套包DevExpress v18.1日前终于正式发布,本站将以连载的形式为大家介绍各版本新增内容.本文将介绍了DevExpress Windows 10 UWP v18.1 的新功能,快来下载 ...

  3. 修改 Windows 10 UWP 应用任务栏图标

    修改 Windows 10 UWP 应用任务栏图标 Windows 7 时代,修改任务栏图标很简单,右键打开属性,更改图标即可.但步入 Windows 8 之后,随着应用商店 UWP 应用的问世,可以 ...

  4. Windows 10 UWP开发:如何去掉ListView默认的选中效果

    原文:Windows 10 UWP开发:如何去掉ListView默认的选中效果 开发UWP的时候,很多人会碰到一个问题,就是ListView在被数据绑定之后经常有个默认选中的效果,就像这样: 而且它不 ...

  5. 面向初学者的 Windows 10 UWP 应用开发

    眼看 Windows 10 for Mobile 正式版也快要推送了,就先挖个坑吧,原文视频链接为:Windows 10 development for absolute beginners,以下博客 ...

  6. Windows 10 UWP程序标题栏设置

    在Windows 10程序中,以前只能用于全屏方式的Metro程序现在可以运行在窗口模式下了,并且改了个新名字,叫Windows 通用程序(Universal Windows app),简称UWP程序 ...

  7. 自动启动 Windows 10 UWP 应用

    原文: https://docs.microsoft.com/zh-cn/windows/uwp/xbox-apps/automate-launching-uwp-apps 简介 开发人员有多种选项可 ...

  8. 设置UWP程序自启动(Automate launching Windows 10 UWP apps)

    在开发UWP程序的过程中,有时候需要设置程序的自启.本人实现的步骤如下: 1.在VS中激活Protocol (Package.appxmanifest --> Declarations --&g ...

  9. Windows 10 UWP 部署

      原文  http://youthlin.com/20151105.html 我们知道VS连接手机可以直接部署到手机里,但平板貌似无法这样干,平板与电脑连接没有丝毫反应……那么想看VS里写的uwp应 ...

随机推荐

  1. NodeJS package.json

    #3 NodeJS package.json 工作目录 package.json 导航至工作目录后,执行下图中的命令

  2. java-java runtime 入门

    1.内存管理:Java提供了无用单元自动收集机制.通过totalMemory()和freeMemory()方法可以知道对象的堆内存有多大,还剩多少.Java会周期性的回收垃圾对象(未使用的对象),以便 ...

  3. [BTS] The external credentials in the SSO database are more recent.

    For test some interface. We change BizTalk Server time to a feature date. For example, change to nex ...

  4. iOS YSMine 通用设置

    概述 我们在开发的过程中,经常需要重复的写个人中心设置的代码,很多情况下,我们都是通过if(indexPath.row)来判断操作以及要跳转的页面,这样的情况是非常不友好的,尤其是当我们需要调整显示顺 ...

  5. redis 内存

    ziplist:http://blog.csdn.net/benbendy1984/article/details/7796956 redis 内部存储结构:http://www.searchtb.c ...

  6. paip.java 注解的详细使用代码

    paip.java 注解的详细使用代码 作者Attilax 艾龙,  EMAIL:1466519819@qq.com 来源:attilax的专栏 地址:http://blog.csdn.net/att ...

  7. Redis 环境搭建与使用(C#)

    Redis Redis是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value数据库,并提供多种语言的API. Redis是一个key-value存储系统.和M ...

  8. python爬虫代码

    原创python爬虫代码 主要用到urllib2.BeautifulSoup模块 #encoding=utf-8 import re import requests import urllib2 im ...

  9. jQuery单选框radio绑定click事件

    <div class="con_head"> <label><input type="radio" name="ask& ...

  10. 新版PHP 7效能實測:Drupal 7能快70%,碎形計算大勝Ruby和Python

    PHP 7才剛在12月3日正式釋出,網頁開發框架Zend公司立刻發表了一份PHP新舊版效能大車拼報告,除了PHP 7和PHP 5.6之外,也把HHVM 3.7版納入一起比較. Zend公司選擇了幾套知 ...