C# 基础知识系列- 16 开发工具篇
0. 前言
这是C# 基础知识系列的最后一个内容讲解篇,下一篇是基础知识-实战篇。这一篇主要讲解一下C#程序的结构和主要编程工具。
1. 工具
工欲善其事必先利其器,在实际动手之前我们先来看看想要编写一套C#程序需要做哪些准备吧。
1.1 选择
C# 的sdk在之前的某个时间点分为了三个方向:
- .net framework 4.X
- .net core
- mono
- UWP
有人可能问了,.net和C#是什么关系。首先需要明确一个概念,C#是一门编程语言,.net是一个CLR,即公共语言运行库。这部分概念比较抽象,不过我这么说大家可能会理解里面的关系了:C#是.net支持的一门语言,于此同时.net还支持F#,Visual C++等。也就是说,.net是一个平台,而C#是运行在这个平台上的语言。
不过,通常上因为.net支持的其他语言并不如C#出名,所以很多人就忽略了两者之间的区别,有时候也用.net代指C#了。
讲了这么多废话,回到之前。.net分了三个方向,第一个方向是沿用之前版本,继续深耕Windows环境。.net core是微软为了跨平台战略而开发的,目前支持 Windows/Linux/Mac等系统。后续的文章也将基于.net core进行。Mono是早期在Linux环境中支持.net framework的一套SDK,后来微软把这项技术合并到了.net发展战略里了,现在支持Android、Mac应用开发。最后一个是UWP,通用Windows平台,据说是为了物联网研究的。
嗯,因为我的工作方向是 BS,也就是做网站开发的,再加上需要接触一些Linux的系统,所以整体就在.net core这个框架下进行后续开发和工作了。换句话说,整个C# 系列都是在.net core上运行的。
1.2 开发工具
在选择了.net core之后,我们就要选择一个适合我们的开发工具了。
1.2.1 Visual Studio
先放一张Visual Studio 2019的图。
这是到目前(2020年05月05日)为止,微软开发的最强大的编译器。在编译器界,Visual Studio有着“宇宙第一编译器”的美名。当然最早是因为其安装包十分巨大,动则2~3G的全量安装,再加上其昂贵的正版授权价格,所以被称为第一编译器。后来随着微软更改了安装方式,改为在线安装然后模块化安装,让程序员可以用哪些装哪些,减少了安装包的大小,同时进一步增强了作为编译器的功能,添加了Community版本(社区版,免费的)之后,第一编译器就成了名副其实的美名。
下图是 Visual Studio支持的功能:
具体的安装就不演示了,这部分网上教程也比较多。如果有疑问的话,可以留言或者私信我哦。
当然了,即使是旗舰版,Visual Studio2019在网上也有很多激活码 ,不过对于公司的话,这部分可能会有法律风险。个人学习研究的话,没事。笑XD
1.2.2 Visual Studio Code
嗯,Code是微软开发的另一个神器,凭借着其轻量、开源和免费这几大特性迅速占领了开发者们的内心。再加上其丰富的插件支持,更是让人欲罢不能。
Code支持跨平台,Windows/Linux/Mac都支持。下图是示意图:
1.2.3 Jetbrains Rider
这是捷克一家软件公司开发的编译器,支持跨平台。语言的智能提示比VS好一点,而且也轻一点。这是它功能特定的宣传图:
可以说功能非常强劲,当然了也是收费的。目前市面上没有很稳定的科学方法。咳咳,我啥也没说。
1.2.4 总结
如果是初学者,我建议使用Visual Studio ,不愧与第一编译器的美名。如果是在Linux环境的话,初学者建议试试Rider。
当然了,对于极客或者Linux环境但预算不高的小伙伴可以试试VS Code,搭配好插件功能也不比另外的编译器差到哪里去。
注:Rider单个软件的订阅是 139美元一年(首年),不过据说有免费的方式。
关于选择编译器的问题,如果是Linux环境,需要事先安装 .net core sdk。这部分内容请参照微软的官方,搜索关键词:net core
这个页面点进去就行,如果在安装过程中有疑问欢迎留言,私信我。
对于Visual Studio则没有这部分烦恼了,只需要在安装过程中选中 net core开发支持即可。
当然,还有更究极的开发方式:使用文本编辑器,然后用命令行dotnet执行。嗯,这样很牛但是挺累的,我就不推荐给你们了。
2. 项目类型
这是在.net core上支持的一些通用的项目类型,我们常用是 console类型(一个控制台程序)、mvc(asp.net core版的mvc项目)、web (一个网站项目)等。
具体的项目情况会在后续的篇幅中介绍,记住net core支持这些类型的项目即可。
3. 总结
这一篇稀里糊涂的介绍完了,之后还有一个实战系列。完结之后,C#的基础知识系列就暂时告一段落了,不过后续还有可能会针对单个知识点的深入讲解,按照计划如果知识点比较大将会新开一个系列,比如之前的多线程和任务那一章,其实是C# 并发编程系列的开篇 。不过下一个系列应该是 C# 数据访问系列。这个系列讲解如何通过ADO.net、EF、Nhibernate等框架操作数据库。
那么,敬请期待第一个实战篇吧,亲爱的小伙伴们。
最后的最后,有问题可以随时回复或私信。当然了,我写的有错误或者不严谨或遗漏的地方也请指出哦。
更多内容烦请关注我的博客《高先生小屋》
C# 基础知识系列- 16 开发工具篇的更多相关文章
- C# 基础知识系列- 17 小工具优化
0. 前言 不知道有没有动手能力强的小伙伴照着上一篇的内容写过程序呢?如果有的话,应该会在使用的时候发现以下几个问题: 每次启动都需要经过漫长的时间去遍历磁盘里的文件目录 因为数据是用的字典保存的,所 ...
- C# 基础知识系列- 12 任务和多线程
0. 前言 照例一份前言,在介绍任务和多线程之前,先介绍一下异步和同步的概念.我们之间介绍的知识点都是在同步执行,所谓的同步就是一行代码一行代码的执行,就像是我们日常乘坐地铁通过安检通道一样,想象我们 ...
- C# 基础知识系列- 14 IO篇 文件的操作 (3)
本篇继续前两篇内容,跟大家介绍一下Path类以及FileSystemInfo这个类的主要方法和属性. 上文提到,在<C# 基础知识系列-IO篇>之文件相关的内容完结之后,会带领大家开发一个 ...
- C# 基础知识系列- 14 IO篇 流的使用
0. 前言 继续之前的C# IO流,在前几篇小短片中我们大概看了下C# 的基础IO也对文件.目录和路径的操作有了一定的了解.这一篇开始,给大家演示一下流的各种操作.以文件流为例,一起来看看如何操作吧. ...
- C# 基础知识系列- 3 集合数组
简单的介绍一下集合,通俗来讲就是用来保管多个数据的方案.比如说我们是一个公司的仓库管理,公司有一堆货物需要管理,有同类的,有不同类的,总而言之就是很多.很乱.我们对照集合的概念对仓库进行管理的话,那么 ...
- C# 基础知识系列- 10 反射和泛型(二)
0. 前言 这篇文章延续<C# 基础知识系列- 5 反射和泛型>,继续介绍C#在反射所开发的功能和做的努力.上一篇文章大概介绍了一下泛型和反射的一些基本内容,主要是通过获取对象的类型,然后 ...
- C# 基础知识系列- 9 字符串的更多用法(一)
0. 前言 在前面的文章里简单介绍了一下字符串的相关内容,并没有涉及到更多的相关内容,这一篇将尝试讲解一下在实际开发工作中会遇到的字符串的很多操作. 1. 创建一个字符串 这部分介绍一下如何创建一个字 ...
- C# 基础知识系列-13 常见类库(三)
0. 前言 在<C# 基础知识系列- 13 常见类库(二)>中,我们介绍了一下DateTime和TimeSpan这两个结构体的内容,也就是C#中日期时间的简单操作.本篇将介绍Guid和Nu ...
- 基础知识系列☞Abstract和Virtual→及相关知识
转载地址→http://www.cnblogs.com/blsong/archive/2010/08/12/1798064.html 在C#的学习中,容易混淆virtual方法和abstract方法的 ...
随机推荐
- ES6构造函数class 和 ES5构造函数语法
构造函数就是JavaScript程序定义好的函数,我们直接使用就可以,实际也是一种函数,构造函数专门用于生成定义对象,通过构造函数生成的对象,称为实例化对象 构造函数分为两种,一种是JavaScrip ...
- 新手必须知道的13个Xcode小技巧
当谈论到iOS开发工具时,有一个肯定是所有iOS开发者都熟悉的,那就是Xcode.Xcode是使所有令人赞叹的iOS app成为可能的驱动力. Xcode能帮助我们完成非常多的事情,但是这也有点让人头 ...
- AJ学IOS 之控制器view显示中view的父子关系及controller的父子关系_解决屏幕旋转不能传递事件问题
AJ分享,必须精品 一:效果 二:项目代码 这个Demo用的几个控制器分别画了不通的xib,随便拖拽了几个空间,主要是几个按钮的切换,主要代码展示下: // // NYViewController.m ...
- 怎么入门python?不懂你别瞎尝试,看看大佬怎么说
学习任何一门语言都是从入门,通过不间断练习达到熟练水准.虽然万事开头难,但好的开始是成功的一半,今天这篇文章就来谈谈怎么入门python? 在开始学习python之前,你需要确定好学习计划和方式 比如 ...
- 【Java】WrapperClass 包装类
什么是包装类? 写写我的想法 就是对于对象和基本类型的无法匹配和强转,基本类型在面向对象的实例类型中,反而成了个特殊的数据类型的存在 在一些特定的情况,我们希望通过对象的方式去处理数据,但是基本类型的 ...
- vue2.x学习笔记(十七)
接着前面的内容:https://www.cnblogs.com/yanggb/p/12616847.html. 动态组件&异步组件 在前面学习组件基础的时候学习过动态组件,官方文档给出过一个例 ...
- 成员指针与mem_fn
本文是<functional>系列的第4篇. 成员指针是一个非常具有C++特色的功能.更低级的语言(如C)没有类,也就没有成员的概念:更高级的语言(如Java)没有指针,即使有也不会有成员 ...
- 从零开始学习docker之在docker中运行springboot项目
一.docker环境配置 首先需要一个安装了docker的服务器(本地或者云服务器),如果没有请看上文,传送门---https://www.cnblogs.com/wdfordream/p/12737 ...
- python 规范篇 如何合理使用 assert
assert 的合理使用,可以增加代码的健壮度,同时也方便了程序出错时开发人员的定位排查. 什么是 assert? Python 的 assert 语句,可以说是一个 debug 的好工具,主要用于测 ...
- react: typescript jest && enzyme
Install Jest 1.install jest dependencies jest @types/jest ts-jest -D 2.jest.config.js module.exports ...