.Net Core实践1
实践目标
编写经典的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的更多相关文章
- .net core实践系列之SSO-跨域实现
前言 接着上篇的<.net core实践系列之SSO-同域实现>,这次来聊聊SSO跨域的实现方式.这次虽说是.net core实践,但是核心点使用jquery居多. 建议看这篇文章的朋友可 ...
- .net core实践系列之短信服务-目录
前言 经过两周多的业余时间,终于把该系列的文章写完了.第一次写系列,可能部分关键点并没有覆盖到,如果有疑问的朋友可以随时反馈给我.另外也感谢在我发布文章时给予我方案建议与反馈源码BUG的朋友们.下面是 ...
- .net core实践系列之短信服务-架构设计
前言 上篇<.net core实践系列之短信服务-为什么选择.net core(开篇)>简单的介绍了(水了一篇).net core.这次针对短信服务的架构设计和技术栈的简析. 源码地址:h ...
- .net core实践系列之短信服务-Sikiro.SMS.Api服务的实现
前言 上篇<.net core实践系列之短信服务-架构设计>介绍了我对短信服务的架构设计,同时针对场景解析了我的设计理念.本篇继续讲解Api服务的实现过程. 源码地址:https://gi ...
- .net core实践系列之短信服务-Api的SDK的实现与测试
前言 上一篇<.net core实践系列之短信服务-Sikiro.SMS.Api服务的实现>讲解了API的设计与实现,本篇主要讲解编写接口的SDK编写还有API的测试. 或许有些人会认为, ...
- .net core实践系列之短信服务-Sikiro.SMS.Bus服务的实现
前言 前两篇<.net core实践系列之短信服务-Sikiro.SMS.Api服务的实现>.<.net core实践系列之短信服务-Api的SDK的实现与测试>分别讲解了AP ...
- .net core实践系列之SSO-同域实现
前言 SSO的系列还是以.Net Core作为实践例子与大家分享,SSO在Web方面复杂度分同域与跨域.本篇先分享同域的设计与实现,跨域将在下篇与大家分享. 如有需要调试demo的,可把SSO项目部署 ...
- .net core实践系列之短信服务-架构优化
前言 通过前面的几篇文章,讲解了一个短信服务的架构设计与实现.然而初始方案并非100%完美的,我们仍可以对该架构做一些优化与调整. 同时我也希望通过这篇文章与大家分享一下,我的架构设计理念. 源码地址 ...
- .Net Core 实践 - 如何在控制台应用(.Net Core)使用appsettings.json配置
新建控制台应用(.Net Core)程序 添加json文件,命名为appsettings.json,设置文件属性 如果较新则复制.添加内容如下 { "MyWords" : &quo ...
随机推荐
- 如何程序化的构造Hibernate配置 // How to initialize Hibernate programmably
Java为什么被人诟病,因为一切都是过度设计.Hibernate其实就是实现了一套JPA的ORM,不过用极度冗赘的配置方式,nodejs Sequelize.js,甚至Python SQLAlchem ...
- js判断时间是否超过了16:30
// 判断时间是否超过了16:30 // true: 已超时 // false: 未超时 function timeCompare() { var now = new Date(); var nowT ...
- 数据库之redis篇(1)—— redis数据库安装,简单使用
简介 reids,由Salvatore Sanfilippo写的一个高性能的key-value数据库,并且它是非关系型数据库,也就是没有像mysql那样多表链接操作,并且它是是完全开源免费的,遵守BS ...
- SQL Server 查看CPU情况
--CPU相关视图 SELECT * FROM sys.dm_os_sys_info SELECT * FROM sys.dm_exec_sessions SELECT * FROM sys.sysp ...
- UGUI合批原理笔记
可以通过Frame debugger查看每个drawcall绘制了哪些东西 UGUI源码下载地址:https://bitbucket.org/Unity-Technologies/ui/downloa ...
- 第二节 pandas 基础知识
pandas 两种数据结构 Series和DataFrame 一 Series 一种类似与一维数组的对象 values:一组数据(ndarray类型) index:相关的数据索引标签 1.1 se ...
- 【Python 21】52周存钱挑战1.0
1.案例描述 按照52周存钱法,存钱人必须在一年52周内,每周递存10元.例如,第一周存10元,第二周存20元,第三周存30元,直到第52周存520元. 记录52周后能存多少钱?即10+20+30+. ...
- audio元素和video元素在ios和andriod中无法自动播放
原因: 因为各大浏览器都为了节省流量,做出了优化,在用户没有行为动作时(交互)不予许自动播放: /音频,写法一 <audio src="music/bg.mp3" autop ...
- Docker(3):Dockerfile配置详解
FROM : 指定base镜像 MAINTAINER :设置镜像的作者,可以是任意的字符串 COPY :将文件从build context 复制到镜像 COPY 支持两种形式:COPY src ...
- bat——批量删除文件文件夹
bat批处理,在工作中会带来很多便利. 例如:想删除多个文件夹内的文件夹“Quality”及其子文件 同时删除所有Cyc*文件夹内的所有R00*.tif文件 则可如下操作 先建立父bat文件run_d ...