最近开始尝试把WP8.1 Runtime的项目升级成Win10 UWP,我用的方法没什么技巧性,就是直接复制文件和代码到新建的UWP项目。结果是后台代码未经修改,全部正常运行。但是UI控件的布局有些偏移,需要微调。这和“Win10 UWP架构是8.1 Runtime的超集”的说法吻合,所以大家也不用太担心升级UWP很困难。我相信迁移应用的主要工作量在由于新的设计风格,而需要修改UI设计,同时也要考虑多平台的响应式布局等等。。。

  .NET Native

  回到文章的主题,Win10 UWP使用了新的编译技术 .Net Native。据介绍:

  ".NET Native可以将C#代码编译为本地机器码。据博客介绍,.NET Native可以优化所有的Windows Store应用。使用.NET Native编译Windows Store应用程序,应用启动速度将加快60%,并且内存占用更小,这主要得益于开发团队优化.NET Native运行时(CLR的一个重构和优化)和使用先进的Microsoft VC++优化器后端。此外,最令开发者兴奋地是,使用.NET Native不仅会让应用拥有C++般的性能表现,还可以实现C#般的生产力。"

  总而言之,这是个提高性能的好东西。。。但是目前我还是遇到了一些现象和小问题。

  1.编译时间长

  这个其实不是错,牺牲编译时间,换运行时间挺值的。因为编译成机器码,工作量更大了,所以时间长了。在我的i5-3230m的笔记本上,编译官方给的小Sample都需要3分钟左右。我们这种菜鸟也终于可以像大神一样,点击编译就出去喝茶了。。。由于这个原因,微软设定了Debug模式下默认采用原来的.Net Core Runtime的方式编译,速度较快。Release模式的时候才采用.Net Native。

   

  由于Debug默认不使用.Net Native编译,这样在调试断点的时候,有些数据会看不到。。。这时候你可以去掉Release的“优化代码”选项,或者新增一个等效的模式再调试。

  2.项目路径含中文会导致编译错误

  我在Debug的时候,一切正常的,Release的时候,却报错了,还是吓人的一长串。。。

  

  经过搜索、网友的提醒,最终发现是项目路径带中文引起的。

  C:\Users\双华\Documents\Visual Studio 2015\Projects\。。。由于微软账号填的是中文名,这些路径都自带中文了。_(:з」∠)_

  3.同时引用Desktop 和 Mobile Extension SDK,则编译失败

  Destop 和 Mobile Extension SDK是两个拓展SDK,包含一些各自平台的专有API。

  

  但是目前在VS2015中,如果同时引用两个SDK,通过.Net Native编译(如Release时)会失败。错误类似上一个问题,里面写了大量 \Microsoft.NetNative\x86\ilc\ilc.exe, Windows Kits

  经过一番搜索,发现已经有人解决了。方法如下:

      

  点此访问原文

  点此下载文中提到的Microsoft.NetNative.targets文件(放到百度云上了)

  吐槽:微软的测试水平下降了。。。

  以上。

  

  

<Win10开发>UWP使用.Net Native编译时遇到的一些问题。的更多相关文章

  1. win10 + VS2010 + OpenCV2.4.10重编译OpenCV开发环境搭建

    win10 + VS2010 + OpenCV2.4.10重编译OpenCV开发环境搭建 重编译的优点:能够调试的时候看OpenCV的源码. 重编译要得到的东西:Debug版本号和Release版本号 ...

  2. VS2015+OpenGL4.0开发编译时弹出错误:glaux.lib(tk.obj) : error LNK2019: 无法解析的外部符号 _sscanf,该符号在函数 _GetRegistrySysColors@8 中被引用

    一.问题描述: VS2015+OpenGL4.0开发编译时弹出如下所示的错误: 1>glaux.lib(tk.obj) : error LNK2019: 无法解析的外部符号 _sscanf,该符 ...

  3. C# 9 新特性:代码生成器、编译时反射

    前言 今天 .NET 官方博客宣布 C# 9 Source Generators 第一个预览版发布,这是一个用户已经喊了快 5 年特性,今天终于发布了. 简介 Source Generators 顾名 ...

  4. Linux Kernel 代码艺术——编译时断言

    本系列文章主要写我在阅读Linux内核过程中,关注的比较难以理解但又设计巧妙的代码片段(不关注OS的各个模块的设计思想,此部分我准备写在“深入理解Linux Kernel” 系列文章中),一来通过内核 ...

  5. 将Microsoft Ajax Minifier集成到VS2013对JS、CSS进行编译时压缩

    在网站发布中,一般要将js,css文件压缩减少体积,以减少在HTTP请求中的流量.将Microsoft Ajax Minifier集成到VS2013中就可以对JS.CSS进行编译时压缩. VS2013 ...

  6. iOS系统提供开发环境下命令行编译工具:xcodebuild

    iOS系统提供开发环境下命令行编译工具:xcodebuild[3] xcodebuild 在介绍xcodebuild之前,需要先弄清楚一些在XCode环境下的一些概念[4]: Workspace:简单 ...

  7. Win10开发:学习资料汇总(转)

    距离2015.07.29 Windows 10 正式发布已经过去一个多月了.在那之前微软也早已退出Windows 10 SDK,距离目前已经半年过去了. 在Windows8/WindowsPhone时 ...

  8. WP & Win10开发:实现ListView下拉加载的两种方法

    1.通过ListView控件的ContainerContentChanging方法.该方法在列表项被实例化时触发,在列表项最后一个项目实例化的时候触发刷新数据逻辑就可以实现下拉加载了. 代码如下:// ...

  9. cocos2d-html5的jsb模式下如何在编译时自动将js编译为jsc

    cocos2d-html5是一个用JS来开发游戏的框架,通过javascript Binding的方式可以将游戏编译到手机上.这对前端开发人员来说非常方便,开发效率也比使用c++开发要快的多. jsb ...

随机推荐

  1. 使用包时,报 xxx.default is not a function

     最近做了一个导出功能,代码如下 import request from 'request-promise-native'; export default class Form { // 导出 @po ...

  2. oracle分析函数Rank, Dense_rank, row_number

    http://www.cnblogs.com/wuyisky/archive/2010/02/24/oracle_rank.html 目录=============================== ...

  3. 201771010128王玉兰《面向对象与程序设计(Java)》第十七周学习总结

    第一部分:理论基础 线程的同步 多线程并发运行不确定性问题解决方案:引入线 程同步机制,使得另一线程要使用该方法,就只 能等待. 在Java中解决多线程同步问题的方法有两种: - Java SE 5. ...

  4. 全局设置UITableView的属性|正确计算contentSize|MJRefresh mj_footer 能正常隐藏在底部,不因为数据过少展示在页面中部

    可在AppDelegate中设置 if (@available(iOS 11.0, *)) { UITableView.appearance.estimatedRowHeight = 0; UITab ...

  5. HashMap集合嵌套集合方法四种

    Map<String, HashMap<Person, String>> m=new HashMap<String, HashMap<Person, String& ...

  6. 【C++】运算符优先级和结合性

    从上表可以大致总结这样一个规律: 优先级 运算符 高 初等运算符 | 单目运算符 | 算术运算符(先乘除,后加减) | 关系运算符 | 逻辑运算符(不包括!) | 条件运算符 ↓ 赋值运算符 低 逗号 ...

  7. [PHP学习教程 - 网络]004.模拟发送HTTP请求[GET/POST](HTTP Simulator)

    引言:经常在开发期间,客户端与服务端的调试都是借助于真实的容器返回.尤其是在处理到POST时,通常刚刚入门的兄弟姐妹就一定要借助容器.今天,我们就来处理一下模拟HTTP. 本文列举了常见的四种请求方式 ...

  8. 【转】shell的反引号、单引号、双引号的作用

    Linux Shell中有三种引号,分别为双引号(" ").单引号(' ')以及反引号(` `). 其中双引号对字符串中出现的$.''.`和\进行替换:单引号不进行替换,将字符串中 ...

  9. Spring相关面试题-整理

    1.什么是Spring MVC?简单介绍一下你对Spring MVC的理解? Spring MVC是一个基于Java的实现了MVC设计模式的请求驱动类型的轻量级Web框架,通过把Model,View, ...

  10. Java实现 蓝桥杯 算法训练 Torry的困惑(基本型)

    算法训练 Torry的困惑(基本型) 时间限制:1.0s 内存限制:512.0MB 问题描述 Torry从小喜爱数学.一天,老师告诉他,像2.3.5.7--这样的数叫做质数.Torry突然想到一个问题 ...