在 Linux Ubuntu 上成功編譯 dnx 之後,會在 artifacts/build/ 檔案夾中生成 dnx-coreclr-linux-x64/ 與 dnx-mono/ 這2個檔案夾,前者是基于 coreclr 的 dnx ,後者是基于 mono 的 dnx 。這篇博文中我們将使用基于 coreclr 的 dnx 運作 ASP.NET 5 示例程式。
在 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 輸出的預設頁面:
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLicmbw5iM5QTM2cDMzATMwITM4EzLcZDM1EDMy8CXx8CX1EDMyc2bsJ2Lc12bj5ycn9Gbi52YuAzcldWYtl2Lc9CX6MHc0RHaiojIsJye.png)
(三)
第二個示例程式是 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 跨平台的這一微步,我們可以嘗試在上面運作一些很簡單的站點。