zoukankan      html  css  js  c++  java
  • <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双华DocumentsVisual Studio 2015Projects。。。由于微软账号填的是中文名,这些路径都自带中文了。_(:з」∠)_

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

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

      

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

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

          

      点此访问原文

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

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

      以上。

      

      

  • 相关阅读:
    Spring9:Autowire(自动装配)机制
    【Spring源码分析】非懒加载的单例Bean初始化前后的一些操作
    记一次synchronized锁字符串引发的坑兼再谈Java字符串
    Cglib及其基本使用
    Java回调机制解读
    【设计模式总结】对常用设计模式的一些思考
    【Spring源码分析】非懒加载的单例Bean初始化过程(下篇)
    【Spring源码分析】非懒加载的单例Bean初始化过程(上篇)
    【Spring源码分析】Bean加载流程概览
    Spring8:一些常用的Spring Bean扩展接口
  • 原文地址:https://www.cnblogs.com/aureate-sunshine/p/4781002.html
Copyright © 2011-2022 走看看