<Win10开发>UWP使用.Net Native编译时遇到的一些问题。
最近开始尝试把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编译时遇到的一些问题。的更多相关文章
- win10 + VS2010 + OpenCV2.4.10重编译OpenCV开发环境搭建
win10 + VS2010 + OpenCV2.4.10重编译OpenCV开发环境搭建 重编译的优点:能够调试的时候看OpenCV的源码. 重编译要得到的东西:Debug版本号和Release版本号 ...
- VS2015+OpenGL4.0开发编译时弹出错误:glaux.lib(tk.obj) : error LNK2019: 无法解析的外部符号 _sscanf,该符号在函数 _GetRegistrySysColors@8 中被引用
一.问题描述: VS2015+OpenGL4.0开发编译时弹出如下所示的错误: 1>glaux.lib(tk.obj) : error LNK2019: 无法解析的外部符号 _sscanf,该符 ...
- C# 9 新特性:代码生成器、编译时反射
前言 今天 .NET 官方博客宣布 C# 9 Source Generators 第一个预览版发布,这是一个用户已经喊了快 5 年特性,今天终于发布了. 简介 Source Generators 顾名 ...
- Linux Kernel 代码艺术——编译时断言
本系列文章主要写我在阅读Linux内核过程中,关注的比较难以理解但又设计巧妙的代码片段(不关注OS的各个模块的设计思想,此部分我准备写在“深入理解Linux Kernel” 系列文章中),一来通过内核 ...
- 将Microsoft Ajax Minifier集成到VS2013对JS、CSS进行编译时压缩
在网站发布中,一般要将js,css文件压缩减少体积,以减少在HTTP请求中的流量.将Microsoft Ajax Minifier集成到VS2013中就可以对JS.CSS进行编译时压缩. VS2013 ...
- iOS系统提供开发环境下命令行编译工具:xcodebuild
iOS系统提供开发环境下命令行编译工具:xcodebuild[3] xcodebuild 在介绍xcodebuild之前,需要先弄清楚一些在XCode环境下的一些概念[4]: Workspace:简单 ...
- Win10开发:学习资料汇总(转)
距离2015.07.29 Windows 10 正式发布已经过去一个多月了.在那之前微软也早已退出Windows 10 SDK,距离目前已经半年过去了. 在Windows8/WindowsPhone时 ...
- WP & Win10开发:实现ListView下拉加载的两种方法
1.通过ListView控件的ContainerContentChanging方法.该方法在列表项被实例化时触发,在列表项最后一个项目实例化的时候触发刷新数据逻辑就可以实现下拉加载了. 代码如下:// ...
- cocos2d-html5的jsb模式下如何在编译时自动将js编译为jsc
cocos2d-html5是一个用JS来开发游戏的框架,通过javascript Binding的方式可以将游戏编译到手机上.这对前端开发人员来说非常方便,开发效率也比使用c++开发要快的多. jsb ...
随机推荐
- binlog在并发状态下的记录
前两天看binlog发现个奇怪的地方:对于position靠后的记录,timestamp却比之前的记录还要小.当时觉得大概和并发有关系 后来做了个实验 开两个session 对于session1: b ...
- Hills And Valleys 杭电多校第五场
题意:长度为n的序列,有一次翻转区间的机会,问最长不减序列 题解:如果没有翻转区间的机会,有两个做法. 一是dp[i]表示以i结尾的最长序列 dp[i]=max(dp[i],dp[j]+1) (j& ...
- poj3249 拓扑找最长路
Test for Job Time Limit: 5000MS Memory Limit: 65536K Total Submissions: 11230 Accepted: 2651 Des ...
- Higher-Order Functions Fundamentals
Higher-Order Functions A function that accepts and/or returns another function is called a higher-or ...
- ExtJS动态隐藏Panel中按钮
1.直接隐藏 在bbar的按钮中直接加属性:hidden : true 属性,可隐藏:disabled : true 属性,可禁用 在columns列中直接加属性:hidden : true 属性,可 ...
- docker的镜像加速
docker加速配置 1,阿里云镜像加速 1.登录:https://dev.aliyun.com/search.html 2.登录阿里云 搜索 容器镜像服务 找到后如下图 ‘ 您可以通过修改da ...
- 【JAVA习题三】求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加
import java.util.Scanner; public class a加aa加aaa { public static void main(String[] args) { // TODO A ...
- JSP学习之请求和响应编码
今天的学习涉及到了 jsp中的两大函数 request(请求) 和 response(响应),这应该是大家学习jsp时最先碰到的两个对象,具体有什么作用呢?应该怎么用呢?请继续往下面看. 一.requ ...
- Java——参数传递
写这篇文章时,其实还是不理解Java中的参数传递只有传值没有传址(传引用).这里引用知乎上大神的讲解来记录一下. 一.基本类型和引用类型 int num = 10; String str = &quo ...
- PETS渗透测试标准总结
国外的标准框架,感觉大部分渗透公司的测试指南都是从这俩借鉴的,正好复习下. 国外渗透测试标准:http://www.pentest-standard.org 渗透测试分为:前期交互,情报搜集,威胁建模 ...