写在前面

阅读目录:

  1. Install .NET Version Manager (DNVM)
  2. Install .NET Core Execution Environment (DNX)
  3. Write the app
  4. Run the app

如果一两个月不去关注 .NET 跨平台的一些东西,再次进行学习就会很吃力,而且有很多新的变化,是你不知道的,比如命名的变化等。之前有尝试过 ASP.NET 5 在 Windows 环境中的部署,包括在 IIS 或非 IIS 环境中,但应用程序创建的非常简单,就是使用 Visual Studio 2015 创建 ASP.NET 5 应用程序,之后你就不需要关心 ASP.NET 5 的运行环境该怎么搭建,Visual Studio 2015 会帮你自动生成,然后你把这一坨文件(包含代码和程序包)拷贝到 Windows 服务器就可以了,最后敲一下 k runk web 的命令,浏览器输入 project.json 中配置的服务器地址,就这么简单。

但如果自己搭建 .NET 运行环境,会是怎样的一种情况呢?就像 dudu 把所有 .NET 跨平台的项目,在各个平台 build 一遍,这个就不像上面敲几个命令这么简单了。今天在尝试之前,对于技术小白的我来说,有几个不知所措的地方(我相信你也是),记录一下:

  • CoreCLR 和 DNX 到底是什么关系?
  • 如何安装 CoreCLR?
  • 如何安装 DNX?
  • 不使用 Visual Studio 2015,跨平台的应用程序代码该如何写?
  • 命令行代码该如何敲?
  • ....

是不是有点迷茫呢?还好通过万能的 Google,找到了这样一篇文章:It is very easy to get started with .NET Core on your platform of choice.,文章很简单,就是几个命令行代码,我喜欢简单的东西,所以我决定按照上面的指示尝试下,首先是最简单的 Windows 平台。

对于上面的几个问题,可以通过实际操作的过程中,进行深入体会。

1. Install .NET Version Manager (DNVM)

DNVM 是什么?DNVM 的前身是 KVM(K Version Manager),KVM 又是什么?KVM 是 KRE 的版本管理器,KRE 又又是什么?KRE 是 ASP.NET 5 应用程序的运行时,也就是 DNX 的程序包管理器,也就是 .NET 的程序包管理器,难道统一了?不知道。

安装命令(PowerShell):

PS > &{$Branch='dev';iex ((new-object net.webclient).DownloadString('https://raw.githubusercontent.com/aspnet/Home/dev/dnvminstall.ps1'))}

操作截图:

2. Install .NET Core Execution Environment (DNX)

不是应该要安装 CoreCLR 吗?为什么要按照 DNX?DNX 是什么?从上面的简单解释中,可以看到 DNX = .NET Core Execution Environment,注意 Execution,意为执行,.NET Core Execution Environment(DNX) = .NET Core runtime(CoreCLR) 吗?很显然,这两个不是一个概念,一个是运行时,一个是执行环境,我个人理解,执行环境包含运行时,并且执行环境基于运行时,也就是 DNX base on CoreCLR,我之前一直以为 DNX 是 ASP.NET 5 应用程序的执行环境(GitHub 项目在 aspnet 下),但现在显然不是,它应该是整个 .NET 应用程序的执行环境,下面我们创建一个控制台程序就可以证明,废话有点多,我们先安装一下 DNX。

安装命令(PowerShell):

PS > dnvm install -r coreclr latest -u

但是报下面的错误:

转到安装 DNX 的目录,并再次执行命名:

根据提示,把 dnvm 改为 .\dnvm:

解决“因为在此系统中禁止执行脚本”问题,执行 set-ExecutionPolicy RemoteSigned 命令:

再次执行安装 DNX 命令:

安装成功:

3. Write the app

为了增加工作量,我们不使用 Visual Studio 2015 创建应用程序,可以进行手写,也可以使用 generator 进行快速创建,我们先按照文章的代码进行编写。

HelloWorld.cs:

        using System;

        public class Program {
public static void Main(string[] args){
Console.WriteLine("Hello World from Core CLR!");
}
}

project.json:

       {
"version": "1.0.0-*",
"dependencies": {
},
"frameworks" : {
"dnx451" : { },
"dnxcore50" : {
"dependencies": {
"System.Console": "4.0.0-beta-*"
}
}
}
}

4. Run the app

在上面我们创建了两个文件:HelloWorld.cs 和 project.json,这是一个简单不能再简单的控制台应用程序。

首先,转到这个目录下:

PS > cd C:\Users\Administrator\.dnx\application_test

然后执行恢复程序包命令:

PS > dnu restore

但是却出现下面的错误:

很明显,nuget 链接不上,从昨天下午到昨天晚上,一直在搞这个,抱着侥幸的心理,希望它有那么一瞬间是好的,但事与愿违,这个服务器是按时按量的,当时买的时候,想买美国的,但是阿里云说已经售罄,没办法,只能买的深圳的,今天早上又试了下,还是不行,转到美国服务器购买页面上,发现包年包月是可以买的(太无耻了),然后又买了一个月最低配,把深圳那个给释放掉了。

在美国服务器上,重新运行命令(成功):

运行应用程序:

PS > dnu . run

运行结果:

后续

这篇文章很简单,但是个开始,也是我最近真正第一次尝试跨平台,上面的应用程序是简单的控制台,下面计划用 generator 创建 ASP.NET 5 应用程序试试,然后再在 Linux 和 Mac OS X 上搞搞。

就到这!

Windows 搭建 .NET 跨平台环境并运行应用程序的更多相关文章

  1. Windows搭建python开发环境,python入门到精通[一]

    从大学开始玩python到现在参加工作,已经有5年了,现在的公司是一家.net的公司用到python的比较少,最近公司有新项目需要用到python,领导希望我来跟其他同事training,就有了这篇博 ...

  2. Windows搭建python开发环境

    python你不去认识它,可能没什么,一旦你认识了它,你就会爱上它 基本概念Python(英语发音:/ˈpaɪθən/), 是一种面向对象.解释型计算机程序设计语言,由Guido van Rossum ...

  3. Eclipse搭建Android开发环境并运行Android项目

    Eclipse搭建Android开发环境并运行Android项目 (详细) 安装环境: window 10 64位 安装工具: JDK.Eclipse.SDK.ADT 安装步骤: 1.JAVA JDK ...

  4. Windows 下使用 GNUstep 编译并运行 Objective-C 程序

    今晚上开始看<Objective-C 程序设计(第4版)>这本书(OSChina 正在做此书的书评活动,详情请看这里),到现在为止看到第 7 章,于是想动手试试写两简单的程序编译跑跑看. ...

  5. IDEA搭建scala开发环境开发spark应用程序

    通过IDEA搭建scala开发环境开发spark应用程序   一.idea社区版安装scala插件 因为idea默认不支持scala开发环境,所以当需要使用idea搭建scala开发环境时,首先需要安 ...

  6. 【转】如何配置EditPlus中Java运行环境,运行Java程序

    如何配置EditPlus中Java运行环境,运行Java程序 http://jingyan.baidu.com/article/86112f13725e2e2736978711.html 分步阅读 E ...

  7. 在Windows下设置环境变量 运行mysql程序变得更容易

    在Windows下设置环境变量,点开始菜单,右键单击我的电脑--属性--高级--环境变量 可以看到PATH的变量是这样的: C:\WINDOWS;C:\WINDOWS\COMMAND   为了让运行m ...

  8. PyCharm搭建Spark开发环境 + 第一个pyspark程序

    一, PyCharm搭建Spark开发环境 Windows7, Java 1.8.0_74, Scala 2.12.6, Spark 2.2.1, Hadoop 2.7.6 通常情况下,Spark开发 ...

  9. 通过IDEA搭建scala开发环境开发spark应用程序

    一.idea社区版安装scala插件 因为idea默认不支持scala开发环境,所以当需要使用idea搭建scala开发环境时,首先需要安装scala插件,具体安装办法如下. 1.打开idea,点击c ...

随机推荐

  1. 在linux中设置静态ip地址

    在linux中设置静态ip地址1.在终端中输入:vi /etc/sysconfig/network-scripts/ifcfg-eth0 2.开始编辑,填写ip地址.子网掩码.网关.DNS等[root ...

  2. HTML5 使用application cache 接口实现离线数据缓存

    1.配置缓存文件 cache manifest MIME TYPE:text/cache-manifest文件名称:name.appcache作用:用于配置需要缓存的文件 2.使用方法 在服务器上添加 ...

  3. RecyclerView的介绍与使用

    一.什么是RecyclerView 新的视图控件,是Android-support-v7-21版本中新增的一个Widgets,官方对于它的介绍则是:RecyclerView是ListView的升级版本 ...

  4. 模拟--poj1835宇航员的故事

    这道题委实无语了,刚开始以为是很一般的方位模拟题,懒得看样例直接写的代码,然后敲了好几个switch结果样例居然没出来.. 仔细分析了样例之后才发现原来随着宇航员方位的改变他的左手方向以及头顶方向是跟 ...

  5. asp.net 验证码(一)Session

    1.模板页 //创建网页模板 输入验证码文本框 并且将文本框中的内容发送的后端验证中去 <p>请输入验证码:<input type="text" name=&qu ...

  6. html websocket

    from:http://www.ibm.com/developerworks/cn/web/1112_huangxa_websocket/ websocket 规范升级过,在该链接的文章内未提及,后面 ...

  7. 领域驱动设计系列 (六):CQRS

    CQRS是Command Query Responsibility Seperation(命令查询职责分离)的缩写. 世上很多事情都比较复杂,但是我们只要进行一些简单的分类后,那么事情就简单了很多,比 ...

  8. 剑指Offer面试题:10.数值的整数次方

    一.题目:数值的整数次方 题目:实现函数double Power(doublebase, int exponent),求base的exponent次方.不得使用库函数,同时不需要考虑大数问题. 在.N ...

  9. 人生苦短,我用python——当我在玩python的时候我玩些什么

    文章背景 家里的第一台电脑是在2006年夏天买的,10年上大学之后基本上就没人用,过没两年就当二手卖给一个熟人. 弟弟小我10岁,今年刚上初一.他在我毕业前半年就整天用妈妈的手机发短信给我,问我什么时 ...

  10. C#+OpenGL+FreeType显示3D文字(3) - 用PointSprite绘制文字

    C#+OpenGL+FreeType显示3D文字(3) - 用PointSprite绘制文字 上一篇实现了把文字绘制到OpenGL窗口,但实质上只是把含有文字的贴图贴到矩形模型上.本篇我们介绍用Poi ...