实践目标

编写经典的hello world程序.使用.netcore框架,然后运行在linux上.

.netcore目前已经是2.1版本了,可以简单的认为是一种跨平台的.net framework,除了MS系统,还能运行在linux mac os.很多年以前,已经有一个体系天生跨平台,就是JAVA.,dotnet体系生态无法与java竞争.

2004年7月发布的mono项目是.net的一种跨平台实现, 做成了能在linux上运行的.net framework,还部分实现了ADO.NET ASP.NET等工具.使用C#开发的程序,终于可以跑在linux上了.当然,前提API能实现.

看过一些介绍.netcore的文章,看完后还是云里雾里,目前就这样理解了.它就是一种.net在linux和其它OS上的重新发明.

基础环境

这个hello world,运行环境如下

WIN10 / vs2017 / .netcore2.1 / centos7 16.11 (运行在VM12.57)

需要一些Linux基本操作知识.类似ms的cmd,linux系统是主要用命令行交互.比如新建文件/文件夹,进入文件夹,运行文件,查看系统信息等等.不像MS有易于操作的图形界面.会一些linux命令,并不意味着能玩转linux.

#[mkdir] 建立文件夹

#[tar] 解压缩用

#[In] 建立链接文件,这如同ms系统中的"快捷方式",就是一个指向运行文件的引用

#[echo $PATH] 显示环境变量.和MS一样,在cmd中执行一个程序时,如果这个程序所在目录不在环境变量中,那么提示找不到 程序.除非到这个程序的目录下执行.

#[可执行程序] 运行可执行程序.如果希望在任何目录下都能执行,可将其目录加到环境变量,或者在已经有环境变量目录下,添加一个到该程序的"链接文件"(快捷方式).

安装.netcore

和MS系统中一样,如果要跑C#程序,必须安装.net framework,并且必须对应好版本.

在linux中装软件,可以编译源码安装,也可以安装编译好的包.显然,第1种要求高,安装编译好的包要容易一些.

下载.netcore2.14https://github.com/dotnet/core/blob/master/release-notes/2.1/2.1.4/2.1.4-download.md

环境是centos7 所以下载linux X64的这个版本.下载后得到文件 dotnet-sdk-2.1.402-linux-x64.tar.gz

将这个文件复制到centos中.目前是从MS系统复制到VM中的centos

   

再将其解压到/usr/dotnet这个目录下

[root@] mkdir -p /usr/dotnet     // 在usr下建立dotnet目录

[root@] tar zxf dotnet-sdk-2.1.402-linux-x64.tar.gz -C /usr/dotnet // 解压.netcore到/usr/dotnet目录下

[root@] ln -s /usr/dotnet/dotnet /usr/local/bin // dotnet是可执行文件,在/usr/local/bin下建立一个到该文件的"快捷方式".这样,在其它目录下也能执行dotnet命令了,因为/usr/local/bin已经在环境变量里了

测试程序

在centos下安装好了.netcore的SDK之后.就能运行程序了.

在vs2017里建立一个.netcore控制台程序,写在那句经典的 Console.WriteLine("Hello World!");  这个过程和.netframework时没有什么区别.

编译后在bin里有这些文件.其中.dll那个文件就是可执行文件

将这些文件复制到centos下,然后进入这个目录,使用dotnet命令执行这个dll

[root@] dotnet ConsoleApp1.dll

Hello World!打印出来.运行成功了.

就这样,在MS下开发的.C#程序,可以运行在linux下了.

.Net Core实践1的更多相关文章

  1. .net core实践系列之SSO-跨域实现

    前言 接着上篇的<.net core实践系列之SSO-同域实现>,这次来聊聊SSO跨域的实现方式.这次虽说是.net core实践,但是核心点使用jquery居多. 建议看这篇文章的朋友可 ...

  2. .net core实践系列之短信服务-目录

    前言 经过两周多的业余时间,终于把该系列的文章写完了.第一次写系列,可能部分关键点并没有覆盖到,如果有疑问的朋友可以随时反馈给我.另外也感谢在我发布文章时给予我方案建议与反馈源码BUG的朋友们.下面是 ...

  3. .net core实践系列之短信服务-架构设计

    前言 上篇<.net core实践系列之短信服务-为什么选择.net core(开篇)>简单的介绍了(水了一篇).net core.这次针对短信服务的架构设计和技术栈的简析. 源码地址:h ...

  4. .net core实践系列之短信服务-Sikiro.SMS.Api服务的实现

    前言 上篇<.net core实践系列之短信服务-架构设计>介绍了我对短信服务的架构设计,同时针对场景解析了我的设计理念.本篇继续讲解Api服务的实现过程. 源码地址:https://gi ...

  5. .net core实践系列之短信服务-Api的SDK的实现与测试

    前言 上一篇<.net core实践系列之短信服务-Sikiro.SMS.Api服务的实现>讲解了API的设计与实现,本篇主要讲解编写接口的SDK编写还有API的测试. 或许有些人会认为, ...

  6. .net core实践系列之短信服务-Sikiro.SMS.Bus服务的实现

    前言 前两篇<.net core实践系列之短信服务-Sikiro.SMS.Api服务的实现>.<.net core实践系列之短信服务-Api的SDK的实现与测试>分别讲解了AP ...

  7. .net core实践系列之SSO-同域实现

    前言 SSO的系列还是以.Net Core作为实践例子与大家分享,SSO在Web方面复杂度分同域与跨域.本篇先分享同域的设计与实现,跨域将在下篇与大家分享. 如有需要调试demo的,可把SSO项目部署 ...

  8. .net core实践系列之短信服务-架构优化

    前言 通过前面的几篇文章,讲解了一个短信服务的架构设计与实现.然而初始方案并非100%完美的,我们仍可以对该架构做一些优化与调整. 同时我也希望通过这篇文章与大家分享一下,我的架构设计理念. 源码地址 ...

  9. .Net Core 实践 - 如何在控制台应用(.Net Core)使用appsettings.json配置

    新建控制台应用(.Net Core)程序 添加json文件,命名为appsettings.json,设置文件属性 如果较新则复制.添加内容如下 { "MyWords" : &quo ...

随机推荐

  1. Nagle 算法

    1. Nagel算法        TCP/IP协议中,无论发送多少数据,总是要在数据前面加上协议头,同时,对方接收到数据,也需要发送ACK表示确认.为了尽可能的利用网络带宽,TCP总是希望尽可能的发 ...

  2. Cherrypy文件上传非ASCII文件名乱码问题解决

    Cherrypy 版本: 18.0.1 由于某些特殊原因(可能是与标准兼容的问题),Cherrypy对上传文件的原文件名使用 ISO-8859-1 编码方式解码,导致非 ASCII 的文件名显示为乱码 ...

  3. alloc_page分配内存空间--Linux内存管理(十七)

    1 前景回顾 在内核初始化完成之后, 内存管理的责任就由伙伴系统来承担. 伙伴系统基于一种相对简单然而令人吃惊的强大算法. Linux内核使用二进制伙伴算法来管理和分配物理内存页面, 该算法由Know ...

  4. 取消导航栏navigationBar的半透明/毛玻璃效果

    iOS 7.0以上的系统,导航栏默认有毛玻璃效果,遮住了颜色 原因是7.0以上的系统,导航栏默认有毛玻璃效果,遮住了颜色,取消掉这个效果就行了. if( ([[[UIDevice currentDev ...

  5. 1.1 NCE21 Daniel Mendoza

    1.text translation Two hundred years ago, boxing matches were very popular in England. At that time/ ...

  6. DRF项目创建流程(1)

    一 web应用模式 前后端不分离 前后端分离 二 RESTFUL API规范 REST全称是Representational State Transfer,中文意思是表述(编者注:通常译为表征)性状态 ...

  7. jsplumb 中文基础教程

    jsplumb 中文基础教程 https://github.com/wangduanduan/jsplumb-chinese-tutorial

  8. day20-多并发编程基础(一)

    重新写一下吧,系统奔溃了,以前写的完全没了,悲催,今日主要写进程 1. 进程的理论知识 2. python中的进程操作 开始今日份整理,加油,你是最胖的!!! 1. 进程的理论知识 1.1 操作系统的 ...

  9. 【Topcoder 8572】TheLuckySum

    题意:给一个数\(n\),要把它分成lucky numbers的和. 问个数最少.字典序最小的方案. 思路:果断搜索.个数最少,所以迭代加深.枚举要的个数\(m\). 首先我们看\(n\)的个位.它肯 ...

  10. spring cloud中feign的使用

    我们在进行微服务项目的开发的时候,经常会遇到一个问题,比如A服务是一个针对用户的服务,里面有用户的增删改查的接口和方法,而现在我有一个针对产品的服务B服务中有一个查找用户的需求,这个时候我们可以在B服 ...