Win10开发UWP使用.Net Native编译时遇到的一些问题。
最近開始嘗試把WP8.1 Runtime的項(xiàng)目升級(jí)成Win10 UWP,我用的方法沒什么技巧性,就是直接復(fù)制文件和代碼到新建的UWP項(xiàng)目。結(jié)果是后臺(tái)代碼未經(jīng)修改,全部正常運(yùn)行。但是UI控件的布局有些偏移,需要微調(diào)。這和“Win10 UWP架構(gòu)是8.1 Runtime的超集”的說法吻合,所以大家也不用太擔(dān)心升級(jí)UWP很困難。我相信遷移應(yīng)用的主要工作量在由于新的設(shè)計(jì)風(fēng)格,而需要修改UI設(shè)計(jì),同時(shí)也要考慮多平臺(tái)的響應(yīng)式布局等等。。。
.NET Native
回到文章的主題,Win10 UWP使用了新的編譯技術(shù) .Net Native。據(jù)介紹:
".NET Native可以將C#代碼編譯為本地機(jī)器碼。據(jù)博客介紹,.NET Native可以優(yōu)化所有的Windows Store應(yīng)用。使用.NET Native編譯Windows Store應(yīng)用程序,應(yīng)用啟動(dòng)速度將加快60%,并且內(nèi)存占用更小,這主要得益于開發(fā)團(tuán)隊(duì)優(yōu)化.NET Native運(yùn)行時(shí)(CLR的一個(gè)重構(gòu)和優(yōu)化)和使用先進(jìn)的Microsoft VC++優(yōu)化器后端。此外,最令開發(fā)者興奮地是,使用.NET Native不僅會(huì)讓應(yīng)用擁有C++般的性能表現(xiàn),還可以實(shí)現(xiàn)C#般的生產(chǎn)力。"
總而言之,這是個(gè)提高性能的好東西。。。但是目前我還是遇到了一些現(xiàn)象和小問題。
1.編譯時(shí)間長
這個(gè)其實(shí)不是錯(cuò),犧牲編譯時(shí)間,換運(yùn)行時(shí)間挺值的。因?yàn)榫幾g成機(jī)器碼,工作量更大了,所以時(shí)間長了。在我的i5-3230m的筆記本上,編譯官方給的小Sample都需要3分鐘左右。我們這種菜鳥也終于可以像大神一樣,點(diǎn)擊編譯就出去喝茶了。。。由于這個(gè)原因,微軟設(shè)定了Debug模式下默認(rèn)采用原來的.Net Core Runtime的方式編譯,速度較快。Release模式的時(shí)候才采用.Net Native。
?
由于Debug默認(rèn)不使用.Net Native編譯,這樣在調(diào)試斷點(diǎn)的時(shí)候,有些數(shù)據(jù)會(huì)看不到。。。這時(shí)候你可以去掉Release的“優(yōu)化代碼”選項(xiàng),或者新增一個(gè)等效的模式再調(diào)試。
2.項(xiàng)目路徑含中文會(huì)導(dǎo)致編譯錯(cuò)誤
我在Debug的時(shí)候,一切正常的,Release的時(shí)候,卻報(bào)錯(cuò)了,還是嚇人的一長串。。。
經(jīng)過搜索、網(wǎng)友的提醒,最終發(fā)現(xiàn)是項(xiàng)目路徑帶中文引起的。
C:\Users\雙華\Documents\Visual Studio 2015\Projects\。。。由于微軟賬號(hào)填的是中文名,這些路徑都自帶中文了。_(:з」∠)_
3.同時(shí)引用Desktop 和 Mobile Extension SDK,則編譯失敗
Destop 和 Mobile Extension SDK是兩個(gè)拓展SDK,包含一些各自平臺(tái)的專有API。
但是目前在VS2015中,如果同時(shí)引用兩個(gè)SDK,通過.Net Native編譯(如Release時(shí))會(huì)失敗。錯(cuò)誤類似上一個(gè)問題,里面寫了大量 \Microsoft.NetNative\x86\ilc\ilc.exe, Windows Kits
經(jīng)過一番搜索,發(fā)現(xiàn)已經(jīng)有人解決了。方法如下:
點(diǎn)此訪問原文
點(diǎn)此下載文中提到的Microsoft.NetNative.targets文件(放到百度云上了)
吐槽:微軟的測(cè)試水平下降了。。。
以上。
轉(zhuǎn)載于:https://www.cnblogs.com/aureate-sunshine/p/4781002.html
總結(jié)
以上是生活随笔為你收集整理的Win10开发UWP使用.Net Native编译时遇到的一些问题。的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Mac下Sublime text2中文乱
- 下一篇: JSON 之 SuperObject(6