文章概要
.NET Core 快速学习、入门系列教程。这个入门系列教程主要跟大家聊聊.NET Core的前世今生,以及Windows、Linux(CentOS、Ubuntu)基础开发环境的搭建、第一个.NET Core App,以及开发工具的使用、调试技巧,调试快捷键整理等等。
.NET Core 2.0发布之后,实际上是实现了.NET Standard 2.0 约等于 .NET Framework 4.6.1 可以说,想用的API都有了。以后就可以放心的使用 ASP.NET Core on Linux,这可比跑在Mono上放心多了。从.NET平台迁移到.NET Core必将是趋势,所以学习.NET Core非常有必要。
开篇:说说.NET Core的那些事儿
一、.NET Core的诞生
聊 .NET Core,就不得不说他的爸爸 .NET。
当年Java刚刚兴起,如火如荼,微软也非常推崇Java,当时Windows平台的Java虚拟机就是微软按照JVM标准实现的,据说也是当时性能最好的Java虚拟机。但是微软也是有私心的,微软总想搞点Windows平台上的特性,有点想把Java绑定到Windows平台上的味道,另外Sun公司确实有点小心眼,于是Sun公司就跟微软闹掰了,然后微软就推出了 .NET,.NET从出生开始其实就借鉴了Java,然后又一步步在语言特性、窗体开发等方面实现了超越。Java在1.6版本以后发展缓慢,后面Java也在语言特性上借鉴了 .NET。当然,这也是由于Sun公司不太争气。https://www.zhihu.com/question/22814456
.NET虽然一直发展的不错,也有WPF、Unity3D这样具有竞争力框架的出现。
但是.NET平台在一些较大的项目,尤其是不受互联网公司的喜爱。就是因为.NET不是开源的框架,也不是可跨平台的框架,那就会带来以下问题:
- 钱:选择.NET就要选择Visual Studio,Windows Server,license是不可忽视的成本
- 生态:没有来自于社区的贡献,那.NET没有诞生优秀框架的土壤
- 人才:无法吸引一线公司优秀互联网工程师加入,因为他们用Java、PHP等
纵使有Mono这么强大的框架,可以让 .NET 跑在Linux上,但是这还不够。
毕竟Mono只能发挥.NET部分有限的能力
另外,马上容器时代都要来了,跟Windows的强依赖,如何上Docker?
当然这这是ken能看到的一部分原因吧,总之,形式所迫,拥抱变化,.NET Core应运而生。
二、.NET core 与 .NET Framework的区别
.NET Core 就是 .NET Framework的区别的开源且跨平台版本
.NET Core 虽然是 .NET Framework的开源版本,但微软毕竟不能维护两个不同的分支
一个跑在Windows上,一个跑在Linux(Unix Like)系统上,所以微软抽象出来一个标准库
.NET Core 与 .NET Framework 都必须实现标准库的API ,就这样 .NET Core、.NET Framework、XAMARIN成了三兄弟,分别为不同的平台服务。
现在 .NET Core 2.0 Preview版本已经发布,.NET Core 2.0 基本等于 .NET Framework 4.6.1,从2016年6月 1.0发布到2017年6月 2.0发布,仅仅1年,达到这种程度,可见微软还是很给力的
三、学习 .NET Core需要做哪些准备?
- 基础的编程经验(.NET、Java、Python等皆可)
Windows / Mac 作为开发环境
建议Windows,因为ken的开发环境是Windows,环境不同,操作会有差异
IDE:Visual Studio 2017 / Visual Studio Code
- Linux 基本使用(推荐 CentOS、Ubuntu)
虚拟机安装教程:https://ken.io/serie/hyper-v-courses CentOS快速上手:https://ken.io/serie/centos7-quickstart Ubuntu快速上手:https://ken.io/serie/ubuntu-quickstart 如果实在不具备搭建Linux环境的条件,Windows也可以,但是不推荐
我的第一个.NET Core App(Windows篇)
一、前言
- 本篇开发环境?
1、操作系统: Windows 10 X64
2、SDK: .NET Core 2.0 Preview二、安装 .NET Core SDK
1、下载 .NET Core
下载地址:https://www.microsoft.com/net/download/core
根据自己电脑情况选择对应版本即可
.NET CORE 2.0下载地址:https://aka.ms/dotnet-sdk-2.0.0-preview2-win-x642、安装 .NET Core
微软出品,一键安装,只需一步,看图:
三、熟悉命令(cmd)
1、查看版本
#使用命令提示符(cmd)或者Windows PowerShell
dotnet --version
2、可选参数介绍
| 参数 | 介绍(en) | 介绍(ken的翻译) | | —- | —- | —- | | new | Initialize .NET projects. | 初始化项目(相当于通过VS模板新建项目) | | restore | Restore dependencies specified in the .NET project. | 还原项目中的依赖(相当于VS创建ASP.NET MVC,添加相关依赖) | | run | Compiles and immediately executes a .NET project. | 启动项目 | | build | Builds a .NET project. | 编译项目 | | publish | Publishes a .NET project for deployment (including the runtime). | 发布项目(包含runtime) | | test | Runs unit tests using the test runner specified in the project. | 启动单元测试 | | pack | Creates a NuGet package. | 创建nuget包 | | migrate | Migrates a project.json based project to a msbuild based project. | 迁移基于project.json,以兼容msbuild的编译 | | clean | Clean build output(s). | 清除项目中编译产生的输出 | | sln | Modify solution (SLN) files. | 修改解决方案文件.sln | | add | Add reference to the project. | 添加引用 | | remove | Remove reference from the project. | 移除引用 | | list | List reference in the project. | 列出项目中的引用 | | nuget | Provides additional NuGet commands. | 通过nuget参数并附加一些参数,可以进行nuget包管理的一些操作 | | msbuild | Runs Microsoft Build Engine (MSBuild). | 使用msbuild进行编译 | | vstest | Runs Microsoft Test Execution Command Line Tool. | 启动命令行测试工具 | | -v/—version | Display .NET Core SDK version. | 查看 .NET Core SDK版本 | | -i/—info | Display .NET Core information. | 查看 .NET Core 详细信息 | | -d/—diagnostics | Enable diagnostic output. | 启用诊断 | | -v/—verbosity | Set the verbosity level of the command. | 设置冗长命令集? | | -h/—help | Show help. | 查看帮助 |
四、HelloWorld项目
1、创建项目
#使用命令提示符(cmd)或者Windows PowerShell
#1、打开项目文件夹(如果没有就先创建好)
d:
cd d:\projects
#2、创建项目
dotnet new console -o helloworld
#dotnet new :创建&初始化项目
#console : 模板类型(相当于VS创建项目选择控制台应用程序)
#-o :指定output路径名,可以理解为项目文件夹名称,默认项目名称=项目文件夹名称,也可以用-n 单独指定项目名称
#dotnet new console -n helloworld 效果等同于 dotnet new console -o helloworld
#执行输出:
The template "Console Application" was created successfully.
Processing post-creation actions...
Running 'dotnet restore' on helloworld\helloworld.csproj...
Restoring packages for D:\Projects\helloworld\helloworld.csproj...
Installing Microsoft.NETCore.DotNetAppHost 2.0.0-preview2-25407-01.
Installing Microsoft.Packaging.Tools 1.0.0-preview2-25401-01.
Installing Microsoft.NETCore.DotNetHostResolver 2.0.0-preview2-25407-01.
Installing NETStandard.Library 2.0.0-preview2-25401-01.
Installing Microsoft.NETCore.Platforms 2.0.0-preview2-25405-01.
Installing Microsoft.NETCore.DotNetHostPolicy 2.0.0-preview2-25407-01.
Installing Microsoft.NETCore.App 2.0.0-preview2-25407-01.
Generating MSBuild file D:\Projects\helloworld\obj\helloworld.csproj.nuget.g.props.
Generating MSBuild file D:\Projects\helloworld\obj\helloworld.csproj.nuget.g.targets.
Restore completed in 7.04 sec for D:\Projects\helloworld\helloworld.csproj.
Restore succeeded.
#项目文件就在d:\projects\hellworld中
2、输出结果分析
#1、显示根据指定dotnet new console -o helloworld模板创建了项目
The template "Console Application" was created successfully.
#2、然后又主动调用了dotnet restore命令来还原项目的引用,主动安装依赖
Processing post-creation actions...
Running 'dotnet restore' on helloworld\helloworld.csproj...
Restoring packages for D:\Projects\helloworld\helloworld.csproj...
3、运行
cd d:\projects\helloworld
dotnet run
#运行结果
Hello World!
# 恭喜你,你的第一个.NET Core应用程序就这么诞生了
#源代码请查 d:\projects\hellworld\Program.cs 文件
五、备注
.NET Core 2.0 项目模板
Templates | Short Name | Language | Tags |
---|---|---|---|
Console Application | console | [C#], F#, VB | Common/Console |
Class library | classlib | [C#], F#, VB | Common/Library |
Unit Test Project | mstest | [C#], F#, VB | Test/MSTest |
xUnit Test Project | xunit | [C#], F#, VB | Test/xUnit |
ASP.NET Core Empty | web | [C#] | Web/Empty |
ASP.NET Core Web App (Model-View-Controller) | mvc | [C#], F# | Web/MVC |
ASP.NET Core Web App (Razor Pages) | razor | [C#] | Web/MVC/Razor Pages |
ASP.NET Core with Angular | angular | [C#] | Web/MVC/SPA |
ASP.NET Core with React.js | react | [C#] | Web/MVC/SPA |
ASP.NET Core with React.js and Redux | reactredux | [C#] | Web/MVC/SPA |
ASP.NET Core Web API | webapi | [C#] | Web/WebAPI |
Nuget Config | nugetconfig | Config | |
Web Config | webconfig | Config | |
Solution File | sln | Solution | |
Razor Page | page | Web/ASP.NET | |
MVC ViewImports | viewimports | Web/ASP.NET | |
MVC ViewStart | viewstart | Web/ASP.NET |
如何知道命令支持哪些参数?
答:利用好—help/-h 参数
#示例:
dotnet --help
dotnet new --help
dotnet restore --help
dotnet new console --help
dotnet new mvc --help
我的第一个.NET Core App (CentOS篇)
一、前言
- 本篇开发环境
1、操作系统:CentOS7(因为ken比较偏爱CentOS7)
2、SDK版本:.NET Core 2.0 Preview
- 你可能需要的前置知识
1、了解如何通过Hyper-V安装CentOS虚拟机
2、了解CentOS7基础命令/常用命令
二、安装 .NET Core SDK
1、安装必要依赖
sudo yum -y install libunwind libicu
2、下载SDK
SDK列表:https://www.microsoft.com/net/download/core
cd /home/downloads
curl -sSL -o dotnet-2.0-preview.tar.gz https://aka.ms/dotnet-sdk-2.0.0-preview2-linux-x64-bin
#preview版本下载地址需参考:https://www.microsoft.com/net/core/preview
3、SDK目录配置
#创建SDK目录
sudo mkdir -p /usr/dotnet/dotnet-2.0-preview
#将SDK解压到指定目录中
sudo tar zxf dotnet-2.0-preview.tar.gz -C /usr/dotnet/dotnet-2.0-preview
4、创建软连接
sudo ln -s /usr/dotnet/dotnet-2.0-preview/dotnet /usr/local/bin
三、熟悉命令(cmd)
1、查看版本
dotnet --version
#2.0.0-preview2-006497
2、可选参数介绍
参数 | 介绍(en) | 介绍(ken的翻译) |
---|---|---|
new | Initialize .NET projects. | 初始化项目(相当于通过VS模板新建项目) |
restore | Restore dependencies specified in the .NET project. | 还原项目中的依赖(相当于VS创建 ASP.NET MVC,添加相关依赖) |
run | Compiles and immediately executes a .NET project. | 启动项目 |
build | Builds a .NET project. | 编译项目 |
publish | Publishes a .NET project for deployment (including the runtime). | 发布项目(包含runtime) |
test | Runs unit tests using the test runner specified in the project. | 启动单元测试 |
pack | Creates a NuGet package. | 创建nuget包 |
migrate | Migrates a project.json based project to a msbuild based project. | 迁移基于project.json,以兼容msbuild的编译 |
clean | Clean build output(s). | 清除项目中编译产生的输出 |
sln | Modify solution (SLN) files. | 修改解决方案文件.sln |
add | Add reference to the project. | 添加引用 |
remove | Remove reference from the project. | 移除引用 |
list | List reference in the project. | 列出项目中的引用 |
nuget | Provides additional NuGet commands. | 通过nuget参数并附加一些参数,可以进行nuget包管理的一些操作 |
msbuild | Runs Microsoft Build Engine (MSBuild). | 使用msbuild进行编译 |
vstest | Runs Microsoft Test Execution Command Line Tool. | 启动命令行测试工具 |
-v/—version | Display .NET Core SDK version. | 查看 .NET Core SDK版本 |
-i/—info | Display .NET Core information. | 查看 .NET Core 详细信息 |
-d/—diagnostics | Enable diagnostic output. | 启用诊断 |
-v/—verbosity | Set the verbosity level of the command. | 设置冗长命令集? |
-h/—help | Show help. | 查看帮助 |
四、HelloWorld项目
1、创建项目
#1、创建&打开项目文件夹
mkdir /projects && cd /projects
#2、创建项目
dotnet new console -o helloworld
#dotnet new :创建&初始化项目
#console : 模板类型(相当于VS创建项目选择控制台应用程序)
#-o :指定output路径名,可以理解为项目文件夹名称,默认项目名称=项目文件夹名称,也可以用-n 单独指定项目名称
#dotnet new console -n helloworld 效果等同于 dotnet new console -o helloworld
#执行输出最后关键信息:
The template "Console Application" was created successfully.
Processing post-creation actions...
Running 'dotnet restore' on helloworld/helloworld.csproj...
Restoring packages for /projects/helloworld/helloworld.csproj...
Installing Microsoft.NETCore.DotNetAppHost 2.0.0-preview2-25407-01.
Installing Microsoft.Packaging.Tools 1.0.0-preview2-25401-01.
Installing Microsoft.NETCore.DotNetHostResolver 2.0.0-preview2-25407-01.
Installing NETStandard.Library 2.0.0-preview2-25401-01.
Installing Microsoft.NETCore.Platforms 2.0.0-preview2-25405-01.
Installing Microsoft.NETCore.DotNetHostPolicy 2.0.0-preview2-25407-01.
Installing Microsoft.NETCore.App 2.0.0-preview2-25407-01.
Generating MSBuild file /projects/helloworld/obj/helloworld.csproj.nuget.g.props.
Generating MSBuild file /projects/helloworld/obj/helloworld.csproj.nuget.g.targets.
Restore completed in 3.75 sec for /projects/helloworld/helloworld.csproj.
Restore succeeded.
#项目文件就在/projects/helloworld/中
2、输出结果分析
#1、显示根据指定dotnet new console -o helloworld模板创建了项目
The template "Console Application" was created successfully.
#2、然后又主动调用了dotnet restore命令来还原项目的引用,主动安装依赖
Processing post-creation actions...
Running 'dotnet restore' on helloworld/helloworld.csproj...
Restoring packages for /projects/helloworld/helloworld.csproj...
3、运行
cd /projects/helloworld/
dotnet run
#运行结果
Hello World!
# 恭喜你,你的第一个.NET Core应用程序就这么诞生了
#源代码请查看 /projects/helloworld/Program.cs 文件
五、备注
.NET Core 2.0项目模板
Templates | Short Name | Language | Tags |
---|---|---|---|
Console Application | console | [C#], F#, VB | Common/Console |
Class library | classlib | [C#], F#, VB | Common/Library |
Unit Test Project | mstest | [C#], F#, VB | Test/MSTest |
xUnit Test Project | xunit | [C#], F#, VB | Test/xUnit |
ASP.NET Core Empty | web | [C#] | Web/Empty |
ASP.NET Core Web App (Model-View-Controller) | mvc | [C#], F# | Web/MVC |
ASP.NET Core Web App (Razor Pages) | razor | [C#] | Web/MVC/Razor Pages |
ASP.NET Core with Angular | angular | [C#] | Web/MVC/SPA |
ASP.NET Core with React.js | react | [C#] | Web/MVC/SPA |
ASP.NET Core with React.js and Redux | reactredux | [C#] | Web/MVC/SPA |
ASP.NET Core Web API | webapi | [C#] | Web/WebAPI |
Nuget Config | nugetconfig | Config | |
Web Config | webconfig | Config | |
Solution File | sln | Solution | |
Razor Page | page | Web/ASP.NET | |
MVC ViewImports | viewimports | Web/ASP.NET | |
MVC ViewStart | viewstart | Web/ASP.NET |
如何知道命令支持哪些参数?
答:利用好—help/-h 参数
#示例:
dotnet --help
dotnet new --help
dotnet restore --help
dotnet new console --help
dotnet new mvc --help
使用VS Code开发.NET Core控制台应用程序
一、前言
为什么选择VS Code
VS Code 是一款跨平台的代码编辑器,想想他的哥哥VS,并是微软出品的宇宙第一IDE,
那作为VS的弟弟,VS Code 也不会差,毕竟微软出品。反正ken是这么认为的
本篇开发环境
1、操作系统: Windows 10 X64
2、SDK: .NET Core 2.0 Preview
3、VS Code:1.14
二、安装&配置
1、VS Code下载&安装
(1)下载地址:https://code.visualstudio.com/
(2)安装步骤:一直下一步即可,没什么特别讲究的
2、依赖扩展安装
扩展 | 说明 |
---|---|
C# | 包括语法高亮显示、智能感知、定义、查找所有引用等。调试支持。网络核心(CoreCLR)。 |
Chinese (Simplified) | 简体中文补丁包 |
快捷键(Ctrl+Shift+X)进入扩展管理页,直接搜索扩展名安装即可,或者点击左侧工具栏图标进入扩展管理页
macOS版本快捷键是 Shift+Commnad+X
三、项目创建&开发
1、创建项目
#使用命令提示符(cmd)或者Windows PowerShell
#1、打开项目文件夹
d: && cd d:\projects
#2、创建项目
dotnet new console -n helloworld
2、插件安装
- 打开项目文件夹
- 必须插件安装
打开资源管理器(Ctrl+Shift+E),然后打开Progrom.cs文件
VS Code检测到缺少两个插件
OmniSharp,.NET Core Debugger 会自动下载安装
安装完成后的完整输出:
Updating C# dependencies...
Platform: win32, x86_64
Downloading package 'OmniSharp (.NET 4.6 / x64)' (15622 KB) .................... Done!
Downloading package '.NET Core Debugger (Windows / x64)' (43510 KB) .................... Done!
Installing package 'OmniSharp (.NET 4.6 / x64)'
Installing package '.NET Core Debugger (Windows / x64)'
Finished
3、项目编译与调试
插件安装完毕之后,VS Code会提示缺少必要的编译&调试配置,是否添加,选择Yes即可
- 启动调试
快捷键F5直接启动调试即可
通过调试面板(Ctrl+Shift+D)图形化操作也可
调试输出结果:
-------------------------------------------------------------------
You may only use the Microsoft .NET Core Debugger (vsdbg) with
Visual Studio Code, Visual Studio or Visual Studio for Mac software
to help you develop and test your applications.
-------------------------------------------------------------------
Loaded 'C:\Program Files\dotnet\shared\Microsoft.NETCore.App\2.0.0-preview2-25407-01\System.Private.CoreLib.dll'. Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled.
Loaded 'd:\Projects\helloworld\bin\Debug\netcoreapp2.0\helloworld.dll'. Symbols loaded.
Loaded 'C:\Program Files\dotnet\shared\Microsoft.NETCore.App\2.0.0-preview2-25407-01\System.Runtime.dll'. Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled.
Loaded 'C:\Program Files\dotnet\shared\Microsoft.NETCore.App\2.0.0-preview2-25407-01\System.Console.dll'. Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled.
Loaded 'C:\Program Files\dotnet\shared\Microsoft.NETCore.App\2.0.0-preview2-25407-01\System.Threading.dll'. Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled.
Loaded 'C:\Program Files\dotnet\shared\Microsoft.NETCore.App\2.0.0-preview2-25407-01\System.Runtime.Extensions.dll'. Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled.
Hello World!
The program '[4180] helloworld.dll' has exited with code 0 (0x0).
四、备注
毕竟是微软的工具+微软的SDK,结合起来是蛮方便的
比起 .NET Core 1.0 刚出来的时候(毕竟当时VS Code也简陋),少了很多步骤。是真的爽。
.NET Core 搞起来~
使用VS Code进行C#代码调试的技巧
一、前言
什么是代码调试?
通过调试可以让我们了解代码运行过程中的代码执行信息,比如变量的值等等。
通常调试代码是为了方便我们发现代码中的bug。ken.io觉得熟练代码调试技巧是成为合格程序员的基本要求。
本篇开发环境
1、操作系统: Windows 10 X64
2、SDK: .NET Core 2.0 Preview
3、IDE:VS Code 1.14
二、开始调试
1、设置断点
在代码编辑区域,点击左侧代码行行号的左边,即可在该行设置断点
2、启动调试
使用菜单:调试->启动调试,或者使用快捷键F5启动调试
启动调试后,程序启动,并会停留在第一个断点这一行。且这行的代码并未执行。
VS Code会自动唤出Debug工作区,本文将逐步介绍常用功能。
三、Debug工作区介绍
1、顶部Debug工具栏
按钮&快捷键 | 说明(ken.io的翻译) |
---|---|
绿色向右箭头(F5) | 继续执行程序,如果遇到断点则会停留到该断点 |
蓝色向右箭头(F10) | 单步跳过:执行一条语句,但是遇到方法调用时不进入,直到方法执行完成后直接继续。 |
蓝色向下箭头(F11) | 单步调试:执行一条语句,遇到方法调用时会进入方法进行调试 |
蓝色向上箭头(Shift+F11) | 单步跳出:执行当前当前方法并到下一步骤,如果当前方法有断点则会到下一个断点 |
绿色环形箭头(Ctrl+Shift+F5) | 重新启动调试 |
红色方块(Shift+F5) | 停止调试 |
2、变量区域
3、监视
可以添加要监视的表达式,比如i*2+5
如果i的值发生变化,将会实时计算结果
4、调用堆栈
显示当前调试的堆栈信息
项 | 说明(ken.io的翻译) |
---|---|
heelodotnet.dll | 调用的动态链接库 |
hellodotnet | 命名空间 |
Program.Main(string[] args) | 调用的类&方法 |
Line | 当前调用方法的行号 |
5、管理断点
6、调试过程中修改变量
选中要修改的标量,鼠标右键->设置值(快捷键F2也可以)
设置值:
回车键保存,然后F10进行单步跳过
本来i=0,randomNum=28,如果继续执行result=false,将无法执行if语句块。
修改后randomNum=0,执行后result=true,让本来会被跳过的if语句块可以被调试。
四、备注
VS Code调试 .NET Core快捷键
快捷键 | 说明(ken.io的翻译) |
---|---|
快捷键:F5 | 继续执行程序,如果遇到断点则会停留到该断点 |
快捷键:F10 | 单步跳过:执行一条语句,但是遇到方法调用时不进入,直到方法执行完成后直接继续。 |
快捷键:F11 | 单步调试:执行一条语句,遇到方法调用时会进入方法进行调试 |
快捷键:Shift+F11 | 单步跳出:执行当前当前方法并到下一步骤,如果当前方法有断点则会到下一个断点 |
快捷键:Ctrl+Shift+F5 | 重新启动调试 |
快捷键:Shift+F5 | 停止调试 |
快捷键:F9 | 切换断点:跳到下一个断点 |
快捷键:Shift+F9 | 列断点:在当前光标的下一行增加一个断点 |