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. Bad version number in .class file

    TY项目是用JDK1.6做的,早先在电脑上装了一个1.5的,这回就不能用了.为了能用,我就又装了一个1.6的,修改了环境变量之后,以为一切OK.开始测试,首先在Myeclipse中打开我用1.5编的一 ...

  2. Microsoft 家族新成员 Datazen 移动BI 介绍

    开篇介绍 Microsoft 在上个月即 2015年4月份收购了 Datazen www.datazen.com, Datazen 专注于移动 BI 和数据可视化领域,并且它的基本部署与配置架构都是基 ...

  3. windows下重启mysql

    其中第二种方法对我这无效,以后再搞清楚! 一.MYSQL服务 我的电脑——(右键)管理——服务与应用程序——服务——MYSQL——开启(停止.重启动) 二.命令行方式 Windows 1.点击“开始” ...

  4. os.popen(command)

    command="/usr/local/sbin/xxx_cmd" os.popen(command) xxx_cmd是自己编译的二进制文件,如果不加上全路径/usr/local/ ...

  5. [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 ...

  6. 使用grunt合并压缩js、css文件

    需要了解的知识: 1.nodejs的安装与命令行使用 2.nodejs安装应用 3.grunt的初步了解 本文已假定读者已经熟悉以上知识. 好,我们继续: 任务1:将src目录下的所有zepto及插件 ...

  7. paip.提升性能---list,arraylist,vector,linkedlist,map的选用..

    paip.提升性能---list,arraylist,vector,linkedlist,map的选用.. arraylist,vector基本一样,但是,vector线程安全的. 作者Attilax ...

  8. paip.获取proxool的配置 xml读取通过jdk xml 初始化c3c0在代码中总结

    paip.获取proxool的配置  xml读取通过jdk xml 初始化c3c0在代码中  xml读取通过jdk xml 初始化c3c0在代码中.. ... 作者Attilax  艾龙,  EMAI ...

  9. 在php中,如何将一个页面中的标签,替换为用户想输出的内容

    前言:釜山行,暴露人性, ———————————————————————————————————————————————————————————————————————————— 今天说一个最简单的例 ...

  10. SQL问题集锦

    1.union和union all的区别:http://www.cnblogs.com/xiangshu/articles/2054447.html