.NET跨平台:在Ubuntu上用自己编译的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/HelloWebdnu 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 跨平台的这一微步,我们可以尝试在上面运行一些很简单的站点。

时间: 2024-08-12 06:24:02

.NET跨平台:在Ubuntu上用自己编译的dnx运行ASP.NET 5示例程序的相关文章

.NET跨平台:在CentOS上编译dnx并运行ASP.NET 5示例程序

在之前的博文中我们在 Ubuntu 上成功编译出了 dnx ,并且用它成功运行了 ASP.NET 5 示例程序.在这篇博文中我们将 Ubuntu 换成 CentOS. 目前 dnx 的编译需要用到 mono,所以先要安装 mono,而且最好是用最新的 mono 源代码进行编译并安装. 我们实际成功编译的操作步骤如下(假设将 mono 安装到 /data/mono_build 目录): mkdir /data/mono_build PATH=/data/mono_build/bin:$PATH g

在Ubuntu上下载、编译和安装Android最新内核源代码(Linux Kernel)

文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/6564592 在前一篇文章提到,从源代码树下载下来的最新Android源代码,是不包括内核代码的,也就是Android源代码工程默认不包含Linux Kernel代码,而是使用预先编译好的内核,也就是prebuilt/android-arm/kernel/kernel-qemu文件.那么,如何才能DIY自己的内核呢?这篇文章一一道来. 一. 首选

在Ubuntu上下载、编译和安装Android最新源码

看完了前面说的几本书之后,对Linux Kernel和Android有一定的认识了,是不是心里蠢蠢欲动,想小试牛刀自己编译一把Android源码了呢?一直习惯使用Windows系统,而Android源码是不支持在Windows上编译上,于是决定使用虚拟机安装Ubuntu,然后下载.编译和安装Android源码. 一. 环境准备. 1. 磁盘空间预留20G左右,内存3G,由于一边要跑主机,一边要跑虚拟机,内存要求还是比較高的,这样才会比較流畅. 2. 安装VMWare 7.1.4.我的操作系统是W

ubuntu上安装mysql 编译安装

为什么要折腾?首先说明的是ubuntu上安装mysql等软件是非常容易简单的,其简单的程度盖过windows上的安装,一句sudo apt-get install就可以搞定.如果想用最简便的方法安装mysql,那么本文不适合你;如果你喜欢“折腾”,有兴趣了解这一条sudo apt-get install帮你做了什么,有兴趣了解internal linux的细节并想尝试自己编译软件,那么你是本文的目标读者,希望你能从这篇文章中获得收获. 编译安装的几大步骤: 编译前的准备工作 初识CMAKE——配

在Ubuntu上下载、编译和安装Android最新源代码

文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/6559955 看完了前面说的几本书之后,对Linux Kernel和Android有一定的认识了,是不是心里蠢蠢欲动,想小试牛刀自己编译一把Android源代码了呢?一直习惯使用Windows系统,而Android源代码是不支持在Windows上编译上,于是决定使用虚拟机安装Ubuntu,然后下载.编译和安装Android源代码. 一. 环境准备

【转】在Ubuntu上下载、编译和安装Android最新源代码

原文网址:http://blog.csdn.net/luoshengyang/article/details/6559955 看完了前面说的几本书之后,对Linux Kernel和Android有一定的认识了,是不是心里蠢蠢欲动,想小试牛刀自己编译一把Android源代码了呢?一直习惯使用Windows系统,而Android源代码是不支持在Windows上编译上,于是决定使用虚拟机安装Ubuntu,然后下载.编译和安装Android源代码. 一. 环境准备. 1. 磁盘空间预留20G左右,内存3

ubuntu上源码编译安装mysql5.7.27

一.查看操作系统环境和目录结构,并创建mysql用户和组,以及规划安装mysql所需要的目录. #cat /etc/issue 查看发行版本信息: #cat  /proc/version 查看正在运行的内核版本信息 #uname -a 查看电脑以及操作系统的相关信息. #df -Th 查看系统目录结构和存储空间分配情况 创建组: #sudo groupadd mysql 创建用户并指定用户所属组: #sudo useradd -r -g mysql mysql 创建mysql的安装目录: #mk

在ubuntu上安装eclipse同时连接hadoop运行wordcount程序

起先我是在win7 64位上远程连接hadoop运行wordcount程序的,但是这总是需要网络,考虑到这一情况,我决定将这个环境转移到unbuntu上 需要准备的东西 一个hadoop的jar包,一个连接eclipse的插件(在解压的jar包里有这个东西),一个hadoop-core-*.jar(考虑到连接的权限问题) 一个eclipse的.tar.gz包(其它类型的包也可以,eclipse本身就是不需要安装的,这里就不多说了) 因为我之前在win7上搭建过这个环境,所以一切很顺利,但还是要在

ubuntu 上安装支付宝安全插件不能运行问题

1.在ubuntu的firefox浏览器中打开支付宝首页,不能登录,按照提示下载插件 aliedit.tar.gz 2.解压到某个文件夹下,有文件aliedit.sh, 运行 # sh aliedit.sh 3.但在支付的时候依然不能显示密码输入安全控件框,折腾后,由于在桌面系统下一般是由当前用户(非root)运行的,而安装时候是root用户安装的.所以firefox执行该插件 4.解决方法:在命令行模式下,执行切换到当前用户 #  su 当前用户名 #  sh aliedit.sh 5.在执行