簡(jiǎn)介就不多說(shuō)了,搜一下就很多,簡(jiǎn)單的講究是微軟官方的跨平臺(tái)開(kāi)源.net實(shí)現(xiàn)
既然是跨平臺(tái),本篇我就盡可能以Ubuntu為開(kāi)發(fā)平臺(tái)去寫
安裝說(shuō)明:
https://www.microsoft.com/net/core#ubuntu
需要注意的是Ubuntu要求是14.04,我先用16.04結(jié)果沒(méi)辦法安裝……所以還是老實(shí)用指定版本吧
輸入命令:dotnet --version可確認(rèn)安裝成功
yotsuki@ubuntu:~/$ dotnet --version
1.0.0-preview1-002702
開(kāi)發(fā)工具:
微軟之前發(fā)布過(guò)跨平臺(tái)的開(kāi)發(fā)工具Visual Studio Code.本篇以本工具為主。Windows上可以使用VS2015 update2
安裝完成輸入命令 code 可打開(kāi)vscode
HelloWorld:
慣例的helloworld程序,沒(méi)什么好說(shuō)的
yotsuki@ubuntu:~/code/core$ mkdir helloworld
yotsuki@ubuntu:~/code/core$ cd helloworld
yotsuki@ubuntu:~/code/core/helloworld$ dotnet new
Created new C# project in /home/yotsuki/code/core/helloworld.
yotsuki@ubuntu:~/code/core/helloworld$ code .
dotnet new 命令將創(chuàng)建兩個(gè)文件"project.json"和“Program.cs”,其中“project.json”是項(xiàng)目文件(據(jù)說(shuō)微軟打算取消這個(gè)文件恢復(fù)回csproj),兩個(gè)文件的內(nèi)容都比較簡(jiǎn)單,
還原包:
dotnet restore
使用此命令可將project.json文件中引用的包還原到本地,第一次還原會(huì)比較慢。以后每次對(duì)project.json中引用的修改都要運(yùn)行restore還原包
如果使用Windows上的VS2015update2的話,創(chuàng)建項(xiàng)目和每次修改project.json文件時(shí)會(huì)自動(dòng)還原,無(wú)需命令(但得多注意輸出中的錯(cuò)誤信息)
編譯命令:
dotnet build
運(yùn)行命令:
dotnet run
本地程序
如果想要發(fā)布本地程序,修改project.json文件
{
? ? "version": "1.0.0-*",
? ? "buildOptions": {
? ? ? ? "emitEntryPoint": true
? ? },
? ? "dependencies": {
? ? ? ? "Microsoft.NETCore.App": {
? ? ? ? ? ? //"type": "platform", //刪除本行
? ? ? ? ? ? "version": "1.0.0-rc2-3002702"
? ? ? ? }
? ? },
? ? "frameworks": {
? ? ? ? "netcoreapp1.0": {
? ? ? ? ? ? "imports": "dnxcore50"
? ? ? ? }
? ? },
? ? //添加以下節(jié)點(diǎn)
? ? "runtimes": {
? ? ? ? "ubuntu.14.04-x64":{}
? ? }
}
dotnet restore
dotnet publish -r ubuntu.14.04-x64

運(yùn)行后,將在"bin/Debug/netcoreapp1.0/ubuntu.14.04-x64/publish"中發(fā)布本地程序,該程序可直接運(yùn)行,無(wú)需.net core環(huán)境
經(jīng)實(shí)驗(yàn),在另一全新的ubuntu14.04中只要安裝以下依賴即可運(yùn)行
sudo apt-get install libunwind8 libunwind8-dev gettext libicu-dev libicu-dev liblttng-ust-dev libcurl4-openssl-dev libssl-dev uuid-dev unzip
在Ubuntu上編譯Windows本地程序
同樣在project.json的runtimes節(jié)點(diǎn)中增加“win7-x64”:{}(32位系統(tǒng)為win7-x86)
dotnet restore
dotnet publish -r win7-x64
復(fù)制發(fā)布的文件到windows平臺(tái)下,運(yùn)行下看看能否正常

OK,正常運(yùn)行。(感覺(jué)大概不會(huì)有多少人在linux下編譯windows程序吧XDD)
關(guān)于本地程序:
目前我發(fā)布了兩個(gè)平臺(tái)的本地程序,Ubuntu1404和Windows的。發(fā)布出來(lái)的程序都有上百個(gè)文件
windows的文件


Ubuntu1404的文件數(shù)

仔細(xì)研究這些文件發(fā)現(xiàn),其實(shí)這個(gè)所謂的本地程序只是把.net core runtime復(fù)制到你的程序目錄發(fā)布而已……
總結(jié):
.Net Core 是一個(gè)真正跨平臺(tái)的開(kāi)源項(xiàng)目,雖然目前語(yǔ)言只有C#,但C#目前已經(jīng)非常強(qiáng)大了,之前一直因?yàn)镕ramework的平臺(tái)限制存在局限性,但Core給了C#更好的舞臺(tái)。
因?yàn)槭且粋€(gè)新的平臺(tái),目前性能如何還未知,但看微軟的決心,應(yīng)該會(huì)讓大家滿意的?
缺點(diǎn):編譯本地程序需要加載的包過(guò)多,Nuget又慢,第一次restore簡(jiǎn)直要命,我寫這文章的時(shí)候就基本上等了一晚上restore。希望微軟爸爸能在國(guó)內(nèi)加個(gè)鏡像QAQ