Windows 搭建 .NET 跨平台环境并运行应用程序
写在前面
阅读目录:
- Install .NET Version Manager (DNVM)
- Install .NET Core Execution Environment (DNX)
- Write the app
- Run the app
如果一两个月不去关注 .NET 跨平台的一些东西,再次进行学习就会很吃力,而且有很多新的变化,是你不知道的,比如命名的变化等。之前有尝试过 ASP.NET 5 在 Windows 环境中的部署,包括在 IIS 或非 IIS 环境中,但应用程序创建的非常简单,就是使用 Visual Studio 2015 创建 ASP.NET 5 应用程序,之后你就不需要关心 ASP.NET 5 的运行环境该怎么搭建,Visual Studio 2015 会帮你自动生成,然后你把这一坨文件(包含代码和程序包)拷贝到 Windows 服务器就可以了,最后敲一下 k run
或 k 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 跨平台环境并运行应用程序相关推荐
- Intel SGX入门教程(二)在windows环境搭建intel sgx环境并运行helloworld程序
一 .环境要求 1.1 实验环境不低于一下要求 64 位 Microsoft Windows 操作系统 Microsoft Visual Studio 2015 英特尔软件防护扩展 SDK 注意:Vi ...
- windows搭建python开发环境方法_04 Windows下搭建 Python 开发环境 - Python 入门教程
前面两个小节中我们已经学习了在 MacOS 和 Ubuntu 中安装 Python 的开发环境.当然,作为用户基数最多的 Windows 操作系统,我们当然不会忘记,这节课我们就来学习下如何在 Win ...
- flutter windows搭建ios开发环境
flutter windows搭建ios开发环境 具体流程太长了,这里记录下思路过程以及坑点. 原文链接:https://blog.csdn.net/weixin_44259356/article/d ...
- Vue环境搭建(node安装,环境配置,运行项目)
Vue环境搭建(node安装,环境配置,运行项目) 一.安装node 1.去官网下载node之后,推荐安装稳定版本(LTS)node官网下载地址 2.查看node安装成功否 node -v 查看nod ...
- Windows在cmd命令行环境下运行c程序
现在有许多便利的编译器,例如DevC++,sublime,vscode等等,在这些编译器里面我们添加必要的插件就可以直接运行C语言程序.但是还有一种我们可以采取的普适的运行C程序的方法--在cmd命令 ...
- win10环境下 运行debug程序
百度网盘:链接:https://pan.baidu.com/s/1y6omgW6fI-gT3Dp-0hutOg 提取码:iw4l CSDN0积分下载:https://download.csdn. ...
- 在IIS环境之外运行ASPNET程序
有时候,我们需要在IIS环境之外运行ASPNET程序, 如向用户提供ASPNET的程序(别指望用户都安装了IIS), 在WinForm程序中提供WebService接口(这种场合比较少,但我恰好遇到了 ...
- 如何搭建Qt跨平台环境和部署工作
1.编译QT5.6.2源码 目的:(1):获取lib和plugins的库文件,用于移植到开发板上,搭建qt程序的运行环境 (2):获取qmake工具,用于搭建qt开发环境 [1] ...
- windows搭建gcc开发环境(msys2) objdump
前言 可能你并不太了解msys2,但是作为一个程序员,你一定知道mingw,而msys2就集成了mingw,同时msys2还有一些其他的特性,例如包管理器等. msys2可以在windows下搭建一个 ...
最新文章
- [BZOJ1602] [Usaco2008 Oct] 牧场行走 (LCA)
- 聊聊flink的ConnectionManager
- TFS与Eclipse、Microsoft Visual Studio等客户端以webservice进行交换。
- Java 7试用资源
- html-其他常见标签的使用
- git分支拉项目_Git 拉取 GitLab 分支上的项目
- Web—sublime安装包、自动生成代码、使用Emmet插件快速编写CSS样式、emmet(快速开发)的使用
- android录屏软件大全,安卓免费录屏软件哪个好用 免费长时间录屏软件推荐
- ROS二维码识别以及OKR使用
- linux查看服务进程发包,11月18日linux服务器后,服务器向外发包,CPU达99%以上
- 密码太多不知道怎么记录?不如自己写个密码箱小程序
- VS2005 设置DLL程序无入口点
- 在微信公众号中使用jquery和微信SDK
- 一个“脱裤子放屁“的功能!
- 不用任何软件,批量转化图片格式png转jpg,bat脚本实现
- 紫罗兰永恒花园rust简谱_【Sincerely】简谱 自制 高清
- CCleaner的使用
- Activiti7相关问题汇总
- 刘未鹏逃出肖申克系列链接
- 卷积神经网络之多元分类(剪刀石头布)
热门文章
- mysql 5.5.42,mysql-5.1.42安装完成后,出现如下错误的解决办法
- 带头结点的链式表操作集
- html动图放大太模糊怎么调,如何解决图片放大画质失真问题
- php之time的用法,php中time()与$_SERVER[REQUEST_TIME]用法区别
- linux自定义开机启动服务和chkconfig使用方法
- 开源MSSQL Express Profile 文件
- 洛谷P2734 游戏 A Game
- 修改tomcat服务器默认端口
- android136 360 拖拽
- 大熊君大话NodeJS之------Net模块