在 Linux Ubuntu 上成功編譯 dnx 之后,會在 artifacts/build/ 文件夾中生成 dnx-coreclr-linux-x64/ 與 dnx-mono/ 這2個文件夾,前者是基於 coreclr 的 dnx ,后者是基於 mono 的 dnx 。
這篇博文中我們將使用基於 coreclr 的 dnx 運行 ASP.NET 5 示例程序,而 dnx 以及它所需的一切都在 dnx-coreclr-linux-x64/ 的 bin/ 文件夾中,所以只需通過下面的命令就可以運行一個 ASP.NET 5 應用程序。
/data/git/dnx/artifacts/build/dnx-coreclr-linux-x64/bin/dnx . kestrel
下面我們分別通過三種類型(Console/Web/MVC)的 ASP.NET 5 示例程序實際體驗一下。示例程序來自 github.com/aspnet/Home/ 。
(一)
第一個示例程序是 ConsoleApp(ASP.NET 5 控制台應用程序)
using System; public class Program { public static void Main() { Console.WriteLine("Hello World"); } }
用以下命令運行這個 ASP.NET 5 控制台應用程序(無需Web服務器):
cd /data/git/Home/samples/latest/ConsoleApp dnu restore /data/git/dnx/artifacts/build/dnx-coreclr-linux-x64/bin/dnx . run
運行成功!結果如下:
Hello World
(二)
第二個示例程序是 HelloWeb (未使用 MVC 的 ASP.NET 5 Web 應用程序)
using Microsoft.AspNet.Builder; namespace HelloWeb { public class Startup { public void Configure(IApplicationBuilder app) { app.UseStaticFiles(); app.UseWelcomePage(); } } }
用以下命令運行程序(需要Web服務器,用的是Kestrel)
cd /data/git/Home/samples/latest/HelloWeb
dnu restore /data/git/dnx/artifacts/build/dnx-coreclr-linux-x64/bin/dnx . kestrel
運行失敗!出現下面的錯誤:
System.InvalidOperationException: Unable to load libuv. Make sure libuv is installed and available as libuv.so.1
這是由於 Unbuntu 上沒有安裝 libuv,而 Kestrel 是基於 libuv 的。所以先要安裝 libuv,安裝的命令如下:
git clone https://github.com/libuv/libuv.git sh autogen.sh ./configure make make install sudo ln -s /usr/local/lib/libuv.so /usr/lib/libuv.so.1
繼續用 dnx . kestrel 命令運行,這次運行成功!
# /data/git/dnx/artifacts/build/dnx-coreclr-linux-x64/bin/dnx . kestrel Started
然后通過瀏覽器訪問“主機名:端口號”,就會看到 HelloWeb 輸出的默認頁面:

(三)
第二個示例程序是 HelloMvc (基於 ASP.NET 5 的 MVC 示例程序)
using Microsoft.AspNet.Builder; using Microsoft.Framework.DependencyInjection; namespace HelloMvc { public class Startup { public void ConfigureServices(IServiceCollection services) { services.AddMvc(); } public void Configure(IApplicationBuilder app) { app.UseErrorPage(); app.UseMvcWithDefaultRoute(); app.UseWelcomePage(); } } }
用以下命令運行這個 ASP.NET 5 MVC 示例應用程序:
cd /data/git/Home/samples/latest/HelloMvc dnu restore /data/git/dnx/artifacts/build/dnx-coreclr-linux-x64/bin/dnx . kestrel
運行成功!
# /data/git/dnx/artifacts/build/dnx-coreclr-linux-x64/bin/dnx . kestrel Started
然后用瀏覽器訪問,就可以看到 MVC 輸出的頁面:

三個 ASP.NET 5 示例程序運行成功!
雖然這三個示例程序只是微不足道的小玩具,但將它們在最新的 .NET 跨平台的三駕馬車 coreclr/corefx/dnx 上運行起來,可以實際體會一下 .NET 跨平台正在一步一步向前。而且基於 .NET 跨平台的這一微步,我們可以嘗試在上面運行一些很簡單的站點。
