最新的ASP.NET vNext完全开源且可以跨多个平台运行,在Windows环境下我尝试了下,几乎没花什么工夫就跑起了Sample,而在Linux环境下则要多花了不少时间,所以特别记录下整个过程,希望对其他想要尝鲜的人有所帮助。

运行环境

Ubuntu Server 14.04

VirtualBox

Mono >= 3.4.1

*由于Ubuntu库中的Mono版本比较陈旧,满足不了最低要求,所以第一步要做的就是安装最新版本的Mono。

安装Mono

1. 首先从GitHub上取得mono代码:git clone git://github.com/mono/mono.git

*未安装过git程序的话,你首先需要在Ubuntu中执行sudo apt-get install git命令。

2. 这一步有点奇怪,编译新版本的mono需要旧版本的支持,如果未安装过mono的话,请先在Ubuntu执行sudo apt-get install mono-complete命令。

3. 进入mono目录,编译程序:

cd mono
./autogen.sh --prefix=/usr/local
make

*这里可能需要预先安装其它的程序,比如autoconf,libtool,g++,make等等。

4. 安装:make install

5. 执行mozroots --import --sync命令以避免认证问题。

6. 通过mono –version命令确认所安装的mono是最新的版本。

安装KRE

只需要简单的一句命令:

curl https://raw.githubusercontent.com/aspnet/Home/master/kvminstall.sh | sh && source ~/.kre/kvm/kvm.sh && kvm upgrade

kvm upgrade命令会自动下载最新的KRE包, 将其解压到.kre/packages目录下并添加bin文件夹路径至你的环境变量PATH中。

*因为涉及解压的操作,所以unzip程序必须预先安装:sudo apt-get install unzip

安装完成后可以通过kpm –version命令检查是否安装正确。

Hello World

完成所有准备工作之后,即可以尝试运行第一个程序了。按照传统,第一个程序应该是“Hello World!”

1. 首先建立HelloWorld文件夹:mkdir HelloWorld

2. 进入文件夹后:cd HelloWorld,再建立两个文件Program.cs和project.json。

3. 编辑这两个文件(推荐使用vim),在Program.cs加入以下代码:

using System;

public class Program
{
public static void Main()
{
Console.WriteLine("Hello World!");
}
}

而在project.json文件中加入下列配置:

{
"dependencies": {
"System.Console": "4.0.0.0"
},
"configurations": {
"net45": {},
"k10": {}
}
}

4. 执行kpm restore -s https://www.myget.org/F/aspnetvnext/命令。

*该命令会根据配置文件中的描述,从指定nuget仓库中取得必要的依赖项。

5. 运行程序:k run

以上步骤都正确的话,应该就能在shell中看到“Hello World!”的显示。

简单的MVC

接着试一个较复杂的程序,代码可以直接从GitHub中取得。

git clone git://github.com/aspnet/Home.git

取得HelloMvc代码并不能直接使用,因为其指定的Web服务器在Linux中并不存在,我们还需要添加一个工程用于生成Web服务器。

https://github.com/Alxandr/Nowin.vNext/tree/master/src中取得Nowin.vNext文件夹,将其置于与HelloMvc同级的目录下。

然后修改HelloMvc的project.json文件:

{
"version": "0.1-alpha-*",
"dependencies": {
"Microsoft.AspNet.Mvc": "0.1-alpha-*",
"Nowin.vNext": ""
},
"commands": {
"web": "Microsoft.AspNet.Hosting --server Nowin.vNext"
},
"configurations": {
"net45": {
"dependencies": {
"System.Runtime": "",
"System.ComponentModel.DataAnnotations": ""
}
},
"k10": {}
}
}

这样运行kpm restore命令下载依赖项后,执行k web命令,就可以在浏览器中查看网页了。

*其实以上执行时还是会有错误,需要把Startup.cs文件中的app.UseErrorPage();app.UseWelcomePage();语句注释掉才行。猜测是Nowin.vNext服务器中未实现所产生的问题。

客户端访问

因为在这个试验中所用的Ubuntu Server未安装桌面环境,所以也就不能在虚拟机中查看以上的结果。不过既然虚拟机已然成了服务端,不妨就把宿主机当成客户端吧。

在VirtualBox的网络设置中将连接方式改成桥接网卡,这样宿主机就可以通过IP地址访问虚拟机。

上一例子的Web服务器端口号为8080,所以在宿主机的浏览器上输入“虚拟机ip地址:8080”并轻击回车后也就能看到最终的成果了。

在Linux上运行ASP.NET vNext的更多相关文章

  1. Linux上运行NET

    今天尝试了下Ubuntu上运行NET程序,按照 https://github.com/aspnet/Home 的指引,一步一步来: 1.安装DNVM(原名KVM) Linux控制台下输入 curl - ...

  2. .NET跨平台之旅:在生产环境中上线第一个运行于Linux上的ASP.NET Core站点

    2016年7月10日,我们在生产环境中上线了第一个运行于Linux上的ASP.NET Core站点,这是一个简单的提供后端服务的ASP.NET Core Web API站点. 项目是在Windows上 ...

  3. 【无私分享:ASP.NET CORE 项目实战(第十章)】发布项目到 Linux 上运行 Core 项目

    目录索引 [无私分享:ASP.NET CORE 项目实战]目录索引 简介 ASP.Net Core 给我们带来的最大的亮点就是跨平台,我在我电脑(win7)上用虚拟机建了个 CentOS7 ,来演示下 ...

  4. .NET跨平台之旅:生产环境中第2个跑在Linux上的ASP.NET Core站点

    今天我们在生产环境中上线了第2个跑在Linux上的ASP.NET Core站点.这是一个简单的Web API站点,通过命令行的方式调用安装在Linux服务器上的程序完成操作.之前用的是nodejs,现 ...

  5. 简单理解在Mac OS X上运行ASP.NET程序

    运行ASP.NET程序的三要素: 1) CLR(.NET运行时) 2) KRE(ASP.NET运行时) 3) Web服务器 所以在Mac OS X上运行ASP.NET程序,就需要对应这三要素的东西: ...

  6. 发布项目到 Linux 上运行 Core 项目

    发布项目到 Linux 上运行 Core 项目 目录索引 [无私分享:ASP.NET CORE 项目实战]目录索引 简介 ASP.Net Core 给我们带来的最大的亮点就是跨平台,我在我电脑(win ...

  7. 使用 Nginx 在 Linux 上托管 ASP.NET Core 应用程序

    本文于2019年04月10日将标题「CentOS7 部署 ASP.NET Core应用程序」修改为「使用 Nginx 在 Linux 上托管 ASP.NET Core 应用程序」. 环境准备 VMwa ...

  8. Mono 4.0 Mac上运行asp.net mvc 5.2.3

    Mono 4.0 已经发布,二进制包已经准备好,具体的发布说明参见:http://www.mono-project.com/docs/about-mono/releases/4.0.0/. 今天在Ma ...

  9. 不装mono,你的.NET程序照样可以在Linux上运行!

    让.NET应用程序在linux上运行,目前通用的做法就是在Linux上安装mono,然后通过”mono your.exe“命令运行这个程序. 这种运行.net程序的办法有两个弱点,一个是需要客户机安装 ...

随机推荐

  1. C语言 · 阶乘计算 · 基础练习

    问题描述 输入一个正整数n,输出n!的值. 其中n!=1*2*3*-*n. 算法描述 n!可能很大,而计算机能表示的整数范围有限,需要使用高精度计算的方法.使用一个数组A来表示一个大整数a,A[0]表 ...

  2. 【组织级项目管理】P2 MSP P3O

    组织级项目管理--有你,有我,有大家 在过去的2年,无论对于企业来讲,还是对于我们个人都有很多大脑的冲击,有几个词大家应该特别耳熟能详:转型,变革,敏捷,互联网+,组织的项目化管理等.就是这些让我们的 ...

  3. iOS系列文章

    本博客全为原创,如果借鉴了其他文章会在博文的下面进行说明.欢迎转载,但要在文章中给出原文链接,谢谢. 有链接的说明已经发布,没有链接的说明还没有发布. 并不是所有的博文都在这里罗列,有兴趣的可以看博客 ...

  4. C++中的引用

    一,C++中引用的基础知识 1.引用的基本概念 1.所谓的引用其实就是对变量起“别名”.引用和变量对应得是相同的内存,修改引用的值,变量的值也会改变,和指针类似. 2.引用在定义的时候必须要初始化,初 ...

  5. 【知识必备】RxJava+Retrofit二次封装最佳结合体验,打造懒人封装框架~

    一.写在前面 相信各位看官对retrofit和rxjava已经耳熟能详了,最近一直在学习retrofit+rxjava的各种封装姿势,也结合自己的理解,一步一步的做起来. 骚年,如果你还没有掌握ret ...

  6. C#各种同步方法 lock, Monitor,Mutex, Semaphore, Interlocked, ReaderWriterLock,AutoResetEvent, ManualResetEvent

    看下组织结构: System.Object System.MarshalByRefObject System.Threading.WaitHandle System.Threading.Mutex S ...

  7. Linux实战教学笔记03:操作系统发展历程及系统版本选择

    标签(空格分隔): Linux实战教学笔记-陈思齐 第1章 Linux简介 1.1 什么是操作系统? 简单讲:操作系统就是一个人与计算机硬件的中介. 操作系统,英文名称Operating System ...

  8. 读过MBA的CEO更自私?《哈佛商业评论》2016年第12期。4星

    老牌管理杂志.每期都值得精度.本期我还是给4星. 以下是本书中的一些内容的摘抄: 1:他们发现在Airbnb上,如果客人姓名听起来像黑人,那么比名字像白人的客人的接受率会低16%.#45 2:对立组织 ...

  9. angularJS(6)

    angularJS(6) 一:angularJs的事件. 1.ng-click指令定义了AngularJS点击事件. <div ng-app="myapp" ng-contr ...

  10. Jquery EasyUI 开发实录

    有好几年没有用过EasyUI了,最近在外包做的一个项目中新增功能时,又用到了,本以为和按照以前那样用就可以了,可当我真正用的时候,发现许多地方不一样了,就连官网的文档都更新了,最突出的就是不知道什么时 ...