在Linux和Mac OS X系统上运行.NET
.NET Core運(yùn)行時(shí)已經(jīng)看到了實(shí)現(xiàn)真正的跨平臺(tái)的美好前景,它最終出現(xiàn)在Linux和Mac OS X平臺(tái)上。在上周舉辦的Microsoft Build大會(huì)上,來(lái)自微軟的項(xiàng)目經(jīng)理Habib Heydarian為聽眾分析了這一舉措對(duì)開發(fā)者們所帶來(lái)的益處,并告訴開發(fā)者們?nèi)绾伍_始探索這些新的機(jī)會(huì)。在名為“讓.NET實(shí)現(xiàn)跨平臺(tái)”的一場(chǎng)講座中,Heydarian首先介紹了開發(fā)者如何進(jìn)行一次全新的.NET Core安裝。
\\首先,所有的.NET代碼都包含在一個(gè)單獨(dú)的文件夾中,而無(wú)需將它安裝在某個(gè)系統(tǒng)級(jí)別的位置。這樣,只要愿意,每個(gè).NET應(yīng)用都可以使用一個(gè)完全不同的編譯版本。并且在Windows系統(tǒng)上進(jìn)行編譯的代碼也能夠在Mac OS X和Linux系統(tǒng)上運(yùn)行。
\\要在以上系統(tǒng)中運(yùn)行一個(gè)基于命令行的標(biāo)準(zhǔn)HelloWorld程序,可使用以下方式:
\\./corerun HelloWorld.exe
\\// corereun是一個(gè)原生的運(yùn)行app的環(huán)境
\\// 在Windows上,引導(dǎo).NET應(yīng)用的功能已經(jīng)內(nèi)建于操作系統(tǒng)中了
\\在非Windows平臺(tái)上使用.NET,就意味著開發(fā)者們能夠使用ASP.NET 5、CoreCLR,并且從以下共享的功能中受益了:
\\如何獲取.NET Core
\\對(duì)于Mac OS X開發(fā)者來(lái)說(shuō),推薦的方式是使用Homebrew以獲取必要的組件。當(dāng)安裝好Homebrew之后,就可以通過(guò)以下命令獲取.NET組件了:
\\brew tap aspnet/dnx
\brew update
\brew install dnvm
\dnx . kestrel
Linux用戶可以從該項(xiàng)目的網(wǎng)站上下載一個(gè)包含了所有必要組件的TAR文件,隨后按照以下方式進(jìn)行安裝:
\\tar zxvf PartsUnlimited-demo-app-linux.tar.gz -C ~/
\source ~/.dnx/dnvm/dnvm.sh
\dnvm use 1.0.0-beta5-11624 -r coreclr -arch x64
\dnx . kestrel
你一定注意到了一點(diǎn),在這個(gè)兩個(gè)平臺(tái)上所運(yùn)行的最后一條指令都是kestrel的執(zhí)行。Kestrel也正是“跨平臺(tái)的ASP.NET 5 web服務(wù)器”,DNVM則是.NET的版本管理器。目前,該項(xiàng)目只支持64位平臺(tái)的Linux和Mac OS X。開發(fā)團(tuán)隊(duì)仍然在繼續(xù)研究如何讓它支持32位的系統(tǒng)。
\\緊隨Linux和Mac OS X之后,對(duì)FreeBSD的支持最近也加入到該項(xiàng)目中。對(duì)于這三個(gè)平臺(tái)來(lái)說(shuō),目前還存在著一個(gè)限制,那就是從源代碼編譯.NET Core的功能僅限于Windows版本。要從源代碼編譯.NET,開發(fā)者需要首先編譯CoreCLR,然后再編譯CoreFX。
\\正如Windows平臺(tái)上的.NET開發(fā)者能夠利用平臺(tái)調(diào)用(PInvoke)功能一樣,Linux平臺(tái)上的開發(fā)者也能夠使用DLL Import這一命令:
\\[DllImport(“l(fā)ibc”)]
\private static extern int printf(string format);
\…
\Printf(“Hello, //BUILD 2015!\”);
下一步計(jì)劃
\\Heydarian在演講余下的部分談到了該團(tuán)隊(duì)下一步的計(jì)劃,以及微軟對(duì)這一項(xiàng)目的目標(biāo)。隨著Visual Studio不斷地?cái)U(kuò)展到非Windows的平臺(tái)上,微軟希望能夠改進(jìn)在這些新環(huán)境中的調(diào)試功能。對(duì)于VS2015來(lái)說(shuō),就是要實(shí)現(xiàn)遠(yuǎn)程調(diào)試。而對(duì)于VS Code來(lái)說(shuō),首先要從實(shí)現(xiàn)本地調(diào)試開始。
\\另一個(gè)改進(jìn)的方向是整體的上線預(yù)備。為了在這方面有所突破,團(tuán)隊(duì)打算整合MSBuild的支持,并消除目前對(duì)Mono在這方面功能的依賴。
\\Heydarian表示,當(dāng).NET在Linux和Mac OS X平臺(tái)上正式發(fā)布,并成為“RTM”版本之后,微軟將做出以下正式的承諾:
\\在你的應(yīng)用中加入對(duì)Linux和Mac OS X的支持
\\微軟將推出一套API可移植性工具,用于對(duì)現(xiàn)有的代碼進(jìn)行分析,找出所需的程序集和目標(biāo)平臺(tái)。目前為止,唯一對(duì)兼容性進(jìn)行了測(cè)試的Linux分發(fā)平臺(tái)是Ubuntu 14.04.2 LTS。雖然沒有明確地表示不支持其它的Linux分發(fā)平臺(tái),但無(wú)法保證在這些平臺(tái)上是否能夠正常運(yùn)行。
\\Heydarian認(rèn)為目前來(lái)看,微軟所提供的.NET與Mono版本相比,所針對(duì)的市場(chǎng)方向并不相同。Haydarian表示:“……雖然[Mono]在移動(dòng)場(chǎng)合的表現(xiàn)優(yōu)秀,但它并不是為服務(wù)器或云端生產(chǎn)環(huán)境的使用場(chǎng)景而設(shè)計(jì)的……”,而.NET Core傾向于在具有高吞吐量、高伸縮性,以及更高的修復(fù)前平均時(shí)間(MTTF)的服務(wù)器環(huán)境中所使用。
\\希望通過(guò).NET即將提供的功能,從跨平臺(tái)方式中受益的開發(fā)者可以首先從VS2015RC中的ASP.NET 5項(xiàng)目模板開始打造及測(cè)試應(yīng)用,并且參考GitHub上的ASP.NET示例應(yīng)用Parts Unlimited。凡是能夠在Windows上的ASP.NET 5中成功運(yùn)行的應(yīng)用,一旦等到.NET Core RTM之后,就能夠無(wú)縫地遷移至Linux平臺(tái)上。
\\查看英文原文:Running .NET on Linux and Mac OS X
總結(jié)
以上是生活随笔為你收集整理的在Linux和Mac OS X系统上运行.NET的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 《c语言从入门到精通》看书笔记——第4章
- 下一篇: linux -- read(), wri