.NET Core基础扫盲


1. 前言

  • 2. .NET Core 简介
    • 2.1 .NET Core是什么
    • 2.2 .NET Core的组成
    • 2.3 .NET Core的特性
    • 2.4 开发语言
  • 3. Get Started
    • 3.1 Win 10
      • 3.1.1 安装.NET Core SDK和.NET Core Runtime
      • 3.1.2 简单的运行结果
    • 3.2 CentOS 7.2(本地Hyper-V)
      • 3.2.1 安装和运行
      • 3.2.2 Self-contained applications 发布
        • (1) 修改project.json文件
        • (2) 执行restore和publish操作
        • (3) 在Linux平台上运行
  • 4. 总结
    • 4.1 尾声
    • 4.2 相关学习资料
  • 5. 参考资料

 

1. 前言

2.1 .NET Core是什么

  • .NET Runtime 即CoreCLR。如之前所说,CoreCLR与.NET Framework的CLR并没有什么区别,进程管理,GC,JIT(RyuJIT 编译器)这些部分也都是一样的,只是针对服务器系统做了相应优化。现在CLR和CoreCLR也在进行同步更新,只是可以肯定的是,CoreCLR才是.NET的未来,CLR将作为兼容手段而存在

  • Framework Libraries, 即CoreFX。包括集合类,文件系统处理类,XML处理类,异步Task类等

  • SDK Tools 和 Language Compilers (SDK工具和编译器) 即CLI工具和Roslyn编译器。可以通过.NET Core SDK(.NET Core开发工具包)获取。

  • dotnet’app host 用来选取并执行对应运行时,提供组件载入原则和启动.NET Core应用程序。SDK也是通过相同程序启动。

    Tips:是不是想起了MSCorEE.dll这个垫片,它同样承载着Windows平台上为.NET应用程序选择CLR版本的工作

2.3 .NET Core的特性

.NET Core 1.0版本中支持的编程语言仅有C#(F#和VB暂未实现),这里还要提到一个开源的语言编译器Roslyn,它负责将代码编译成我们熟悉的IL语言,然后再借由AOT或JIT编译器编译成机器熟悉的机器语言。

3. Get Started

3.1.1 安装.NET Core SDK和.NET Core Runtime

打开cmd,依次输入mkdir .project(创建目录),cd .\.project(进入目录),dotnet new(新建初始项目),dotnet restore(还原依赖),dotnet run(运行)即可运行第一个Hello World程序

3.2 CentOS 7.2(本地Hyper-V)

详情请见:.NET Core in CentOS,大致命令如下

sudo yum install libunwind libicu   #安装libunwind,libicu包

curl -sSL -o dotnet.tar.gz https://go.microsoft.com/fwlink/?LinkID=809131 #下载dotnet-dev-centos-x64.1.0.0-preview2-003121.tar文件,有时会因为网络问题下载较慢,耐心等待即可,当然也可以手动下载后放到目录下。

sudo mkdir -p /opt/dotnet && sudo tar zxf dotnet.tar.gz -C /opt/dotnet #创建目录并解压已下载文件
sudo ln -s /opt/dotnet/dotnet /usr/local/bin #将目录链接到$PATH下,否则dotnet命令无法识别

mkdir hwapp
cd hwapp

dotnet new #创建默认.NET Core应用
dotnet restore #还原依赖包
dotnet run #运行,结果将显示Hello World!

第六行命令后可使用dotnet --info查看是否链接成功,显示如下

.NET Command Line Tools (1.0.0-preview2-003121)

Product Information:
 Version:            1.0.0-preview2-003121
 Commit SHA-1 hash:  1e9d529bc5

Runtime Environment:
 OS Name:     centos
 OS Version:  7
 OS Platform: Linux
 RID:         centos.7-x64

以上步骤在.NET Core官方网站都可以找到,可以看到应用在经过简单的dotnet new, dotnet restore, dotnet run命令后就跑起来了,但是这其实是类似于开发环境中的调试运行,而且win上new的应用此时也不能直接跨平台到Linux下运行,所以我们又得提到dotnet publish命令了

3.2.2 Self-contained applications 发布

我们现在win10下按照步骤new一个新的HW控制台应用self,按照官方文档要求,我们需要用以下内容替换原来project.json文件(删除"type": "platform",并增加runtimes节点)

{
  "version": "1.0.0-*",
  "buildOptions": {
    "debugType": "portable",
    "emitEntryPoint": true
  },
  "dependencies": {},
  "frameworks": {
    "netcoreapp1.0": {
      "dependencies": {
        "Microsoft.NETCore.App": {
          "version": "1.0.0"
        }
      },
      "imports": "dnxcore50"
    }
  },
  "runtimes":{
   "win10-x64":{}, #win10平台
   "centos.7-x64":{} #centos7.2平台
  }
}

(2) 执行restore和publish操作

上述操作后,我们只需要将发布后的文件夹(bin/release/netcoreapp1.0/centos7-x64/publish,包含self.exe)上传到Linux root目录下project(新建)文件夹中, 在Shell中输入指令

修改可执行权限后,即可成功运行“Hello World”,这就是我们“Self-contained applications”方式的部署方法

4. 总结

至此,.NET Core的学习便告一段落了,以上内容简单介绍了.NET Core的组成和特性,同时也在Windows和Linux系统上通过两种不同的部署方式成功运行了示例。相比较之前的.NET Framework傻瓜式部署,.NET Core的新奇真是让我眼前一亮。接下来,我也会将.NET Core和ASP.NET Core的学习记录下来,欢迎指正。

4.2 相关学习资料

  • 张善友的博客
  • .NET Core Documentation
  • ASP.NET Core Documentation #园子里已经有部分中文版
  • 汤姆大叔的博客:解读ASP.NET 5 & MVC6系列
  • .NET Blog #非常有用的.NET官方资讯
  • 简析.NET Core 以及与 .NET Framework的关系
  • .NET Core SDK Overview
  • .NET Core 1.0 is now released!
  • .NET Core
  • 拥抱.NET Core
  • .NET Core 维基百科
  • 让我们Core在一起:ASP.NET Core & .NET Core 

出处:https://www.cnblogs.com/RIVERSPIRIT/articles/6397160.html