C# .NET及Mono跨平臺(tái)實(shí)現(xiàn)原理解析
一、.NET是什么
.NET是微軟搭建的開發(fā)者平臺(tái),主要包括:
1.支持(面向)該平臺(tái)的編程語言(如C#、Visual Basic、C++/CLI、F#、IronPython、IronRuby...),
2.用于該平臺(tái)下開發(fā)人員的技術(shù)框架體系(.NET Framework、.NET Core、Mono、UWP等),
- 1.定義了通用類型系統(tǒng),龐大的CTS體系
- 2.用于支撐.NET下的語言運(yùn)行時(shí)的環(huán)境:CLR
- 3..NET體系技術(shù)的框架庫FCL
- 3.用于支持開發(fā)人員開發(fā)的軟件工具(即SDK,如VS2017、VS Code等)
二、Mono是什么
微軟的.NET框架本身只能在windows上運(yùn)行,對(duì)于跨平臺(tái)的需求,Mono就產(chǎn)生了。
- Mono是.NET的一個(gè)開源跨平臺(tái)工具,可以實(shí)現(xiàn)跨平臺(tái)運(yùn)行。
- Mono作為.NET框架在不同平臺(tái)上的重要補(bǔ)充,Mono也被Unity所引用。
三、Unity是如何實(shí)現(xiàn)跨平臺(tái)的
因?yàn)閁nity使用了叫CIL(通用中間語言)的代碼指令集。CIL可以在任何支持CLI(通用語言基礎(chǔ)結(jié)構(gòu))的環(huán)境中運(yùn)行。
Unity代碼的編譯分為兩部分:
- 從代碼到CIL的編譯
- 運(yùn)行時(shí)從CIL到本地指令的即時(shí)編譯(不包括IOS,因?yàn)镮OS無法使用JIT引擎)
Unity打包時(shí)會(huì)將mono一同打包進(jìn)來,同時(shí)Unity將腳本編譯為CIL代碼打包,這樣只要是Mono支持的平臺(tái),都可以在Mono中編譯成平臺(tái)本地代碼。
以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
c#使用win32api實(shí)現(xiàn)獲取光標(biāo)位置
本文給大家匯總了2個(gè)使用C#實(shí)現(xiàn)獲取光標(biāo)位置的代碼,非常的簡單實(shí)用,第二種方法更為全面,推薦給大家。2016-02-02unity中實(shí)現(xiàn)Edge瀏覽器鼠標(biāo)手勢的功能思路詳解
這篇文章主要介紹了unity中實(shí)現(xiàn)Edge瀏覽器鼠標(biāo)手勢的功能思路詳解,實(shí)現(xiàn)起來其實(shí)并不復(fù)雜,涉及的技術(shù)點(diǎn)有pc端和移動(dòng)端屏幕拖動(dòng)事件,二維向量的相關(guān)運(yùn)算,手勢匹配算法,事件系統(tǒng)設(shè)計(jì)模式,需要的朋友可以參考下2023-12-12C#基礎(chǔ):基于const與readonly的深入研究
本篇文章是對(duì)c#中const與readonly進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-05-05C#(.net)中按字節(jié)數(shù)截取字符串最后出現(xiàn)亂碼問題的解決
這篇文章主要給大家介紹了關(guān)于C#(.net)中按字節(jié)數(shù)截取字符串最后出現(xiàn)亂碼問題的解決方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2018-06-06c# 將Minio.exe注冊(cè)成windows服務(wù)
這篇文章主要介紹了c# 如何將Minio.exe注冊(cè)成windows服務(wù),幫助大家更好的理解和使用c#,感興趣的朋友可以了解下2020-11-11C#中datagridview使用tooltip控件顯示單元格內(nèi)容的方法
這篇文章主要介紹了C#中datagridview使用tooltip控件顯示單元格內(nèi)容的方法,實(shí)例分析了C#控件的相關(guān)使用技巧,需要的朋友可以參考下2016-06-06C#之Windows自帶打印功能的實(shí)現(xiàn)
這篇文章主要介紹了C#之Windows自帶打印功能的實(shí)現(xiàn)方式,具有很好的價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-06-06