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. 安装时出现 Runtiem error (at 62:321) SWbem Locator:服务不存在,或已被标记为删除 该怎么解决?

    这是由wmi服务损坏引起的错误 修复WMI服务损坏的批处理程序 将下列代码复制到一个文本文件中,改名为fixwmi.bat,运行即可.需要一段时间,请大家耐心等候. ================= ...

  2. Hash哈希(二)一致性Hash(C++实现)

    一致性Hash 一致性哈希算法在1997年由麻省理工学院提出的一种分布式哈希(DHT)实现算法,设计目标是为了解决因特网中的热点(Hot spot)问题,经常用于分布式.负载均衡等. 原理 一致哈希是 ...

  3. Microsoft Azure开发体验 – 网络报名系统

    去年底RP好抢到了中国版Azure的使用机会,最近社团里讨论到9月份招新的问题,就用Azure Website和Azure Table Storage打造了这个报名系统. 网站放在 http://jo ...

  4. ASP.NET 5系列教程 (三):view components介绍

    在ASP.NET MVC 6中,view components (VCs) 功能类似于虚拟视图,但是功能更加强大. VCs兼顾了视图和控制器的优点,你可以把VCs 看作一个Mini 控制器.它负责控制 ...

  5. H5图片裁剪升级版(手机版)

    前段时间做了个跟裁剪相关的活动<用H5中的Canvas等技术制作海报>,这次公司要做个与奥运相关的活动,扫车牌赢奖. 于是我就在上一个活动的基础上,将代码重新封装一下,并且将计算方式写的更 ...

  6. PHP的错误报错级别设置原理简析

    原理简析 摘录php.ini文件的默认配置(php5.4): ; Common Values: ; E_ALL (Show all errors, warnings and notices inclu ...

  7. mysql高级排序&高级匹配查询示例

    在大多数应用场景下,我们使用mysql进行查询时只会用到'=', '>' , '<' , in, like 等常用的方法,看起来,大多数情况下,已经足以应付我们的小型应用了.不过,在一些特 ...

  8. maven源码分析- mvn.bat分析

    第一次知道MAVEN是在2008年,当时想分析geoserver这个开源项目,发现该项目采用了maven进行项目管理,当时粗略的学习了一下.真正在工作中使用是在09年下半年,个人感觉使用起来还是非常好 ...

  9. jsp实现验证码

    在web开发领域里面,验证码是一个比较常见的功能,而归根到底,验证码其实就是一组随机数,或者是一个随机算术 一.基本知识 1.为什么需要验证码? 验证码,很多时候出现在注册页面或者登陆界面,在这些页面 ...

  10. How to get blob data using javascript XmlHttpRequest by sync

    Tested: Firefox 33+ OK Chrome 38+ OK IE 6 -- IE 10 Failed Thanks to 阮一峰's blog: http://www.ruanyifen ...