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. 改进ConcurrentDictionary并行使用的性能

    上一篇文章“ConcurrentDictionary 对决 Dictionary+Locking”中,我们知道了 .NET 4.0 中提供了线程安全的 ConcurrentDictionary< ...

  2. [JAVA] 一个可以编辑、编译、运行Java简单文件的记事本java实现

    本来是Java课做一个仿windows记事本的实验,后来突然脑子一热,结果就给它加了一个编译运行Java文件的功能. 本工程总共大约3000行代码,基本上把所学的java界面.文件.控件的功能都包含在 ...

  3. 基于slideout.js实现的移动端侧边栏滑动特效

    HTML5现在本领太大了,PC端已经无法满足它的胃口了,它将强势攻入移动端,所以移动端中各种特效也得基于HTML5实现,看看我们将要介绍的slideout.js,能帮我们实现怎么样的侧边栏滑动特效呢~ ...

  4. paip.执行shell cmd 命令uapi java php python总结

    paip.执行shell cmd 命令uapi java php python总结 作者Attilax  艾龙,  EMAIL:1466519819@qq.com 来源:attilax的专栏 地址:h ...

  5. SSE技术详解:一种全新的HTML5服务器推送事件技术

    前言 一般来说,Web端即时通讯技术因受限于浏览器的设计限制,一直以来实现起来并不容易,主流的Web端即时通讯方案大致有4种:传统Ajax短轮询.Comet技术.WebSocket技术.SSE(Ser ...

  6. 远哥谈 使用WebSocket开发在线实时看远程服务器log日志的工具

    我们开发软件的,通常会有一个测试环境/开发环境,但是系统开发完成后,还会有一个生产环境,也叫正式环境.正式环境我们一般是不能让开发人员去远程登录和维护的,一般正规的生产环境是专门的负责人员去负责更新, ...

  7. Passwordless SSH Login

    原文地址:http://manjeetdahiya.com/2011/03/03/passwordless-ssh-login/ Consider two machines A and B. We w ...

  8. Windows 10开启默认网络驱动器访问

    在Windows 10的系统策略中,驱动器盘符的网络访问是默认关闭的,用管理员权限打开注册表,找到HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Curre ...

  9. Maven - 项目结构

    一个基础的Maven Java项目结构图如下所示: Project Name |__________ pom.xml |__________ src |                     |__ ...

  10. 巧用css border

    上下左右边框交界处呈现平滑的斜线.利用这个特点,通过设置不同的上下左右边框宽度或颜色,可以得到小三角.梯形等. 调整宽度大小可以调节三角形形状. 实现三角形 示例1: #test1{ height:2 ...