這篇文章給大家分享的是有關(guān)什么是.NET Native的內(nèi)容。小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,一起跟隨小編過來看看吧。
成都創(chuàng)新互聯(lián)公司主要業(yè)務(wù)有網(wǎng)站營(yíng)銷策劃、成都網(wǎng)站設(shè)計(jì)、做網(wǎng)站、微信公眾號(hào)開發(fā)、小程序開發(fā)、H5建站、程序開發(fā)等業(yè)務(wù)。一次合作終身朋友,是我們奉行的宗旨;我們不僅僅把客戶當(dāng)客戶,還把客戶視為我們的合作伙伴,在開展業(yè)務(wù)的過程中,公司還積累了豐富的行業(yè)經(jīng)驗(yàn)、成都全網(wǎng)營(yíng)銷推廣資源和合作伙伴關(guān)系資源,并逐漸建立起規(guī)范的客戶服務(wù)和保障體系。
什么是.NET Native?
.NET Native是一套在Visual Studio 2015中編譯通用Windows(UWP)應(yīng)用的預(yù)編譯工具,它可以將托管的中間語言二進(jìn)制文件編譯為本地二進(jìn)制文件,每一個(gè)托管的通用Windows應(yīng)用都將受益于這項(xiàng)新技術(shù)。在用戶設(shè)備上安裝之前,應(yīng)用會(huì)自動(dòng)編譯為原生代碼。有關(guān)其工作機(jī)制的詳情可以查看MSDN。
.NET Native會(huì)帶來什么?
根據(jù)不同的情況,.NET Native所帶來的好處各種各樣。不過在大多數(shù)情況下,.NET Native將會(huì)使得應(yīng)用啟動(dòng)更快、運(yùn)行更好、占用用戶系統(tǒng)資源更少。具體優(yōu)點(diǎn)如下:
冷啟動(dòng)效率提升60%
熱啟動(dòng)效率提升40%
原生編譯時(shí)應(yīng)用占用內(nèi)存資源更少
系統(tǒng)無需安裝桌面.NET Runtime
由于應(yīng)用在本地編譯,性能可以借助原生代碼的優(yōu)勢(shì)得到改善
可利用業(yè)內(nèi)領(lǐng)先的C#或VB及其編程語言工具
提供全面而一致的.NET編程模型,包括編寫業(yè)務(wù)模型所需的擴(kuò)展API、內(nèi)置內(nèi)存管理以及異常處理等
Debug和Release兩種編譯模式的差異
.NET Native的編譯過程十分復(fù)雜,相比于傳統(tǒng)的.NET編譯,編譯時(shí)間稍微長(zhǎng)一些。上面提到的那些優(yōu)點(diǎn)犧牲了一部分編譯時(shí)間。Visual Studio在編譯應(yīng)用時(shí)會(huì)提醒開發(fā)者這一點(diǎn),保證了良好的開發(fā)體驗(yàn)。
當(dāng)使用Debug編譯模式時(shí),在應(yīng)用中運(yùn)行的是中間語言代碼,.NET系統(tǒng)部件不和應(yīng)用代碼一起封裝,而且應(yīng)用需要依賴Microsoft.NET.CoreRuntime (CoreCLR)包。這就意味著,開發(fā)者可以享有最優(yōu)的開發(fā)體驗(yàn)。編譯和配置都十分迅速,有著豐富的調(diào)試和診斷信息,在.NET開發(fā)中還可以使用所有熟悉的工具。
而對(duì)于Release模式,應(yīng)用會(huì)默認(rèn)使用.NET Native工具鏈。由于程序包編譯成了本地二進(jìn)制文件,它就不用再包含.NET框架庫。另外,程序包依賴于最新安裝的.NET Native Runtime而不是CoreCLR包,設(shè)備上的.NET Native Runtime始終與應(yīng)用程序包兼容。
通過Release的本地原生編譯可以在一個(gè)模擬用戶使用的環(huán)境里對(duì)應(yīng)用進(jìn)行測(cè)試。在應(yīng)用開發(fā)過程中,定期的測(cè)試十分重要,這樣可以保證查找和修改.NET Native編譯器相關(guān)的錯(cuò)誤。大多數(shù)情況下.NET Native編譯器會(huì)正常工作,但在少數(shù)情況下可能就不那么順利了,比如4維以上的數(shù)組可能引發(fā)錯(cuò)誤。用戶最后獲得的是.NET Native編譯的應(yīng)用,所以最好在開發(fā)過程中測(cè)試應(yīng)用的版本,確認(rèn)無誤而后再發(fā)布。
另外需要補(bǔ)充的是,.NET Native取消了跨平臺(tái)的編譯模式。原生編譯的架構(gòu)獨(dú)立,因此跨平臺(tái)編譯不再有用。一個(gè)附加的結(jié)果是,當(dāng)開發(fā)者打包應(yīng)用程序時(shí),需要將三個(gè)體系結(jié)構(gòu)配置(x86、x64、ARM)全部選中,以保證應(yīng)用程序?qū)λ械脑O(shè)備都能兼容。
.NET Native改變了打發(fā)布包的方式,這是給工作流帶來的最后一個(gè)重大變化。.NET Native的一大特點(diǎn)是,編譯器可以放置在云端。在Visual Studio中編譯應(yīng)用包時(shí)會(huì)創(chuàng)建兩個(gè)包,一個(gè)是.appxupload文件,另一個(gè)是側(cè)面加載用的“測(cè)試”.appx文件。.appxupload包含了MSIL二進(jìn)制文件和應(yīng)用使用的.NET Native工具鏈版本信息(也記錄在了AppxManifest.xml文件中)。編譯后的程序包接下來放入應(yīng)用商店,然后被相同版本的.NET Native工具鏈編譯。因?yàn)榫幾g器置于云端,開發(fā)者無需在本地重新編譯應(yīng)用程序,便能夠反復(fù)多次修改程序缺陷。
這樣的改變給開發(fā)者工作流又帶來了另外兩個(gè)改變。第一是開發(fā)者不能修改應(yīng)用程序包的第四個(gè)版本號(hào),這是因?yàn)閼?yīng)用商店需要通過修改版本號(hào)來標(biāo)記在云端的每一次編譯行為。不過開發(fā)者還能修改其他三個(gè)版本號(hào),所以不必有太大的疑慮。第二是需要開發(fā)者特別注意上傳到應(yīng)用商店的程序包。應(yīng)用商店代替開發(fā)者進(jìn)行原生編譯,所以開發(fā)者不能上傳本地.NET Native編譯器生成的原生二進(jìn)制文件。對(duì)此,Visual Studio會(huì)幫助開發(fā)者選擇正確的文件。
總結(jié)來說,.NET Native帶來的最主要的變化是以下幾點(diǎn):
使用Release模式定期測(cè)試開發(fā)的應(yīng)用程序
確保修訂包編號(hào)為0(Visual Studio不允許修改,也不要使用文本編輯器修改)
只上傳創(chuàng)建包時(shí)生成的.appxupload文件至應(yīng)用商店。如果上傳通用Windows平臺(tái)的.appx文件,應(yīng)用商店會(huì)拒絕并報(bào)錯(cuò)
使用.NET Native的其他小技巧
如果開發(fā)者懷疑.NET Native造成了某些錯(cuò)誤,可以嘗試用以下方法解決。因?yàn)镽elease模式默認(rèn)優(yōu)化了代碼,這會(huì)丟失Debug模式下需要的一些生成文件,所以在Release模式中調(diào)試可能會(huì)出現(xiàn)錯(cuò)誤。開發(fā)者可以新建一個(gè)自定義模式來使用.NET Native工具鏈,同時(shí)不要優(yōu)化代碼。詳細(xì)內(nèi)容可以查看這里。
從一開始就避免.NET Native相關(guān)的錯(cuò)誤無疑是更好的選擇。Microsoft.NET Native.Analyzer在開發(fā)過程中如果遇到代碼與.NET Native沖突,會(huì)給出相應(yīng)的警告。
感謝各位的閱讀!關(guān)于“什么是.NET Native”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,讓大家可以學(xué)到更多知識(shí),如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!