文章出處

在將“.NET跨平臺之旅”示例站點 about.cnblogs.com 從 ASP.NET 5 RC1 升級至 ASP.NET Core 1.0 (博文鏈接)之后,我們有一個難以抗拒的沖動 —— 體驗一下 dotnet cli 引入的一個最激動人心的特性 —— 將 .NET 程序編譯為本地(native)機器碼。對應于我們的示例站點,就是將 ASP.NET Core 應用程序編譯為本地機器碼。

如何編譯呢?非常簡單,只需運行下面的命令:

dotnet build --native

編譯輸出如下:

Project AboutUs (.NETStandardApp,Version=v1.3) will be compiled because some of its inputs were newer than its oldest output.
Compiling AboutUs for .NETStandardApp,Version=v1.3

Compilation succeeded.
    0 Warning(s)
    0 Error(s)

Time elapsed 00:00:02.7095915
Input Assembly: /data/AboutUs/bin/Debug/netstandardapp1.3/AboutUs.dll

然后看一下 bin/Debug/netstandardapp1.3/ 文件夾中的內容:

ubuntu.14.04-x64 文件夾中的內容就是 native build 的輸出,AboutUs 是可執行文件。

接下來,激動人心的時刻就要到了 —— 我們將以 AboutUs 這個編譯為本地機器碼的可執行文件運行 ASP.NET Core 站點。

在運行之前,需要做2個小小的準備工作:

1)為了與示例站點源代碼所在的項目文件夾劃清界線,我們新建了一個 about.cnblogs.com 文件夾,并將 ubuntu.14.04-x64 文件夾中的所有文件復制到這個文件夾。

2)將 config.json 文件復制到 about.cnblogs.com 文件夾中,示例站點有數據庫操作(數據庫用的是SQL Server),config.json 中存放著數據庫連接字符串。

做好準備工作,演出就開始了!我們在 about.cnblogs.com 文件夾中運行下面的命令:

./AboutUs

控制臺輸出如下:

dbug: Microsoft.AspNetCore.Hosting.Internal.WebHost[3]
      Hosting starting
dbug: Microsoft.AspNetCore.Hosting.Internal.WebHost[4]
      Hosting started
Hosting environment: Production
Application base path: /data/websites/about.cnblogs.com
Now listening on: http://*:8001
Application started. Press Ctrl+C to shut down.

太帥了!站點成功運行起來了!

瀏覽器訪問站點,一切正常。你現在看到的  about.cnblogs.com 就是在 Linux Ubuntu 服務器上以 native 方式運行的。 

以前只能在做夢時才敢想想的事情,現在正在逐漸成為現實。

注:我們在用 dotnet build --native 命令編譯時,有時 ubuntu.14.04-x64 文件夾中無輸出,可以改用 

dotnet build --native --no-incremental 命令解決這個問題。

【更新】

后來出現502錯誤與.NET Core沒有關系,是因為沒有以后臺服務的方式運行命令,ssh會話一斷開,進程就結束了。現已改為用下面的命令運行:

screen -d -m -s "AboutUs" /data/websites/about.cnblogs.com/AboutUs

文章列表


不含病毒。www.avast.com
arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()