赞
踩
这篇文章属于本人参考诸多博客、教程、文档等资料,所撰写的「Windows10上配置VS Code」系列文章之一,内容随时可能发生更新变动,欢迎关注和收藏VS Code系列配置总目录一文以作备忘。
获取了VS Code编辑器之后,我们将在VS Code中配置C#的语言学习环境。同样的,我会在个人代码库 CodeWorld
中建立 Code_CSharp
和 Code_FSharp
文件夹,里面的文件夹是 CSharp_Single
和 CSharp_Multiple
、FSharp_Single
和 FSharp_Multiple
,分别存放不同的分类代码文件夹,即程序运行目标分别是单个源代码文件或少数几个源代码文件的组合。
访问微软的开发者中心,从这里可以找到微软所有的开发文档,当然也包括VS Code和.NET:
进入.NET页面,里面显示——.NET是一个免费的、跨平台的、开源的开发者平台,用于构建许多不同类型的应用程序:
single-board
计算机;这么粗略一看,真是强大啊。使用.NET,我们可以使用多种语言如C#、F#、Visual Basic,搭配多种编辑器和库,来为Web、移动设备、桌面、游戏、云和物联网开发应用,并在任何兼容的操作系统上运行。.NET文档在此,里面包括所有你需要的.NET参考资料:
进入文档下的https://docs.microsoft.com/zh-cn/dotnet/fundamentals/页面,可以看到真正的宝藏:
除了 Docs
外,建议关注下.NET网站上的 Learn
,里面是.NET的起步教程,都很简短,可以过一遍:
其中,一个简洁的.NET Console教程如下所示:
当然,之前在文档中也看到了入门教程,而且更加全面具体、还有中文。建议过完 Learn
页面后,把文档中的入门教程也看一遍。
Windows中的.NET平台结构图如下,虽然已经有些过时了:
硬件设备和操作系统无需多言,更上一层的是.NET Framework(不仅仅是类库,是框架)。.NET Framework是一个仅支持Windows的.NET版本,安装和运行在Windows操作系统上,是用于构建在Windows上运行的、任何类型的.NET应用程序的核心基础。目前最新的版本是.NET Framework 4.8。
总的来说,.NET Framework提供了在Windows上创建、部署、运行.NET应用的环境,不久的曾经,开发和运行一个.NET应用程序必须安装.NETFramework。.NET Framework包含三个关键的组件:
CLR (Common Language Runtime)
公共语言运行时:.NET Framework的基础,提供了所有.NET应用程序的运行时环境,是所有.NET应用程序都要使用的编程基础。可以将其看作一个在执行时管理代码的代理人,管理代码是CLR的基本功能,能够被托管的代码称为托管代码, 反之是非托管代码。托管代码以“CLR”为目标,非托管代码以“操作系统”为目标。CLS (Common Language Specification)
公共语言规范:是一种最低的语言标准,它制定了一种以.NET平台为目标的语言所必须支持的最小特征,以及该语言与其它.NET语言之间实现互操作所需要的完整特性。凡是遵守这个标准的语言在.NET框架下都可以实现互相调用。简单来说,就是把各种语言转换成统一的语法规范。CTS (Common Type System)
通用类型系统:解决不同语言中数据类型不同的问题,如C#中的整形是 int
,而VB.net中的整形是 Integer
,CTS可以把它们编译成通用的类型 Int32
。JIT (Just In Time)
即时编译器:将转换之后的中间代码编译为二进制语言,交给CPU执行。CLR编译过程如下,.NET编写的所有源代码都不被编译成本地代码,而是由各自语言的编译器编译成微软中间代码 MSIL (Microsoft Intermediate Language)
,再由JIT编译器转换成机器代码(操作系统专用代码)。Managed Code
,是一种介于高级语言和机器语言之间的中间语言,基于堆栈、又支持面向对象。所有能被编译为IL的语言都可以被.NET Framework托管(其它非微软的编程语言要被.NET Framework托管,则需要第三方编译器支持)。FCL (.NET Framework Class Library)
.NET框架类库:一个综合性的、面向对象的、可重用类型集合,其内容被组织成一个树状的命名空间 Namespace Tree
,每个命名空间包含许多类型及其它命名空间,使用FCL时需要引入相应的命名空间。从功能上来看可以将FCL划分成以下几层:
BCL (Basic Class Library)
的大部分组成,主要作用是对.NET框架、.NET运行时及CIL语言本身进行支持,例如基元类型、集合类型、线程处理、应用程序域、运行时、安全性、互操作等。DLR (Dynamic Language Runtime)
动态语言运行时:在.NET Framework 4.0中新增了动态语言运行时 DLR (Dynamic Language Runtime
,向CLR中添加了一组专门用于满足动态语言的服务。借助于DLR,可以开发在.NET Framework上运行的动态语言,还能使用C#、VB.NET等方便地与动态语言交互,目前比较出名的DLR应用有IronPython。FCL核心命名空间简介:
- System:此命名空间包含所有其他的命名空用,包含了.NET中使用的公共数据类型,如
Boolean, DateTime, lnt32
等。此命名空间中还有一个非常重要的数据类型Object
,Object
类是所有其他.NET对象继承的基本类。System Collections.Generic
:支持泛型操作,是.NET 2.0新增的内容;System IO
:支持对文件的操作,如复制、粘贴、删除及对文件的读写等;System.Net
:支持对网络协议的编程;System.Dat
:提供对表示ADO.NET结构的类的访问;System.Windows.Forms
:用于开发Windows应用程序,引入这个命名空间才能使用Win forms
的控件和各种特性;System.Drawing
:支持GDI+基本图形操作
.NET Framework的版本历史图如下所示:
.NET Framework 3.0版本是一个分水岭。之前.NET Framework只提供ASP.NET Web开发、WinFroms窗体应用程序开发等基本的功能,在此之后引入了许多新的特性:
Object Space
,该框架之后从.NET Framework分离出来;LINQ to Objects
的并行实现。PLINQ将LINQ语法的简洁和可靠,与并行编程的强大功能结合在一起。 就像面向任务并行库的代码一样,PLINQ查询会根据主计算机的能力,按比例调整并发程度。LINQ to Objects
查询的速度。这一性能提升使桌面具备高性能计算能力。System.Threading
和 System.Threading.Tasks
命令空间中的一组公共类型和API。TPL的目的是,通过简化将并行和并发添加到应用程序的过程,以提高开发人员的工作效率。.Net Framework 4.7则主要带来了这些提升:为Win10窗体应用带来了高DPI支持;为Win10上的WPF程序带来了触控支持;增强了加密支持;提升性能和稳定性。
初步了解了.NET Framework,再来了解一下.NET平台发布的.NET Core。与.NET Framework不同的是,.NET Core致力于跨平台工作,它是一个跨平台的.NET实现,适用于Windows、Linux、macOS上的网站、服务台和控制台应用程序。此外还有Xamarin/Mono,也是一个.NET实现,用于在所有主流移动操作系统中运行应用程序。
它们之所以都是.NET实现,是因为遵循了.NET Standard——这是所有.NET实现通用的一组基本API,是跨操作系统的关键所在,每个实现还可以调用特定于其运行的操作系统的其他API。例如.NET框架是一个只适用于Windows的.NET实现,包括用于访问Windows注册表的特定API。为了扩展功能,微软和其他公司还在.NET Standard的基础上,维护了一个软件包生态系统,包含超过90000个包,并为.NET构建了一个包管理器NuGet。
不过,关键在于为什么要发布.NET Core。跨平台是一方面,更重要的是统合.NET平台上的众多.NET Framework——除了2002年微软发布的第一个.NET Framework外,还有.NET Compact Framework(用于小型移动设备如Windows mobile,是一个复制精简版的.NET Framework,包括Runtime、Framework、Application Model等),以及之后数年间微软推出的、多个用于在不同的设备和平台上运行的、类似.NET Framework的框架。框架越来越多,对开发者来说是一个巨大的负担,毕竟要在不同设备上维护许多套功能相同的代码,这极大增加了开发的复杂度。
为了改变这种情况,同时迎合当时微软CEO的愿景——抛弃以PC为中心、拥抱各种设备和平台,成为一家软件服务型企业,就必须构建新的微软生态链,统合Windows、Linux、OS X及其他操作系统,覆盖X86/ARM等处理器以及不同的设备(包括PC、Phone、全息眼镜及其他)。
于是.NET Core横空出世,作为一个开源的、模块化、跨平台跨设备的Framework,它全面统合了对Web、移动设备、桌面等的开发。更棒的是,.NET Core在发布程序时不用事先安装Framework,而是通过Nuget(Nuget官网在此)下载,这样在初次部署时,就不用安装一个复杂而庞大的.NET Framework,而是按需动态下载当前操作系统的实现,部署起来更加简单快速、也更轻便。这种基于Nuget的按需加载,构建起.NET Core的跨平台体系。
.NET 5.0是.NET Core 3.1的后继。我们完全可以把.NET 5.0看做.NET Core 5.0,只是移除了 "Core"
这个词。.NET Framework 4.x
已死,.NET Core 3.1才是 LTS (Long-term service)
,其后继者就是.NET 5.0。相对于.NET Core来说,.NET 5.0在开发层面没有过大的变化,依然采用.NET Core的编写模式进行,只是通过以下几个关键方式改进.NET:
下图清楚地展示了.NET 5的统治范围:
虽然如此,.NET 5.0这个版本还不是LTS,只是大版本前的过渡版本,谈不上前景可言,但是又不可或缺,主要是为.NET 6.0做铺垫。
由于.NET 6.0还是Preview版,这里还是下载.NET 5.0吧:
点击.NET网站上的Download,进入下载页面,下载Windows下的.NET 5.0:
之后运行安装程序,此处是 dotnet-sdk-5.0.400-win-x64.exe
:
很简单就安装成功了,只能说不愧是微软:
安装完成后,打开一个新的命令行,输入以下命令:
C:\>dotnet
Usage: dotnet [options]
Usage: dotnet [path-to-application]
Options:
-h|--help Display help.
--info Display .NET information.
--list-sdks Display the installed SDKs.
--list-runtimes Display the installed runtimes.
path-to-application:
The path to an application .dll file to execute.
运行 dotnet new --list
查看能够创建的项目类型:
运行 dotnet --info
能够查看许多信息:
仍在命令行中,输入以下命令来创建应用,之后进入命令新创建的文件夹:
C:\>dotnet new console -o myApp 欢迎使用 .NET 5.0! --------------------- SDK 版本: 5.0.400 遥测 --------- .NET 工具会收集用法数据,帮助我们改善你的体验。它由 Microsoft 收集并与社区共享。你可通过使用喜欢的 shell 将 DOTNET_CLI_TELEMETRY_OPTOUT 环境变量设置为 "1" 或 "true" 来选择退出遥测。 阅读有关 .NET CLI 工具遥测的更多信息: https://aka.ms/dotnet-cli-telemetry ---------------- 已安装 ASP.NET Core HTTPS 开发证书。 若要信任该证书,请运行 "dotnet dev-certs https --trust" (仅限 Windows 和 macOS)。 了解 HTTPS: https://aka.ms/dotnet-https ---------------- 编写你的第一个应用: https://aka.ms/dotnet-hello-world 查找新增功能: https://aka.ms/dotnet-whats-new 浏览文档: https://aka.ms/dotnet-docs 在 GitHub 上报告问题和查找源: https://github.com/dotnet/core 使用 "dotnet --help" 查看可用命令或访问: https://aka.ms/dotnet-cli -------------------------------------------------------------------------------------- 正在准备... 已成功创建模板“Console Application”。 正在处理创建后操作... 在 myApp\myApp.csproj 上运行 “dotnet restore”... 正在确定要还原的项目… 已还原 C:\myApp\myApp.csproj (用时 185 ms)。 已成功还原。 C:\>cd myApp
dotnet new console
命令创建了一个新的控制台程序,-o
参数创建了一个名称为 myApp
的文件夹,里面存放了你的程序和需要的文件:
C:\myApp 的目录
2021/09/07 14:57 <DIR> .
2021/09/07 14:57 <DIR> ..
2021/09/07 14:57 171 myApp.csproj
2021/09/07 14:57 <DIR> obj
2021/09/07 14:57 187 Program.cs
2 个文件 358 字节
3 个目录 34,933,153,792 可用字节
myApp
文件夹中的主要文件是 Program.cs
,默认包含了向控制台打印 "Hello World!"
所需的代码:
C:\myApp>type Program.cs
using System;
namespace myApp
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Hello World!");
}
}
}
接着在命令行中输入以下命令,运行你的程序:
C:\myApp>dotnet run
Hello World!
然后随便使用什么文本编辑器,编辑 Program.cs
文件,添加一行新的代码:
C:\myApp>emacs Program.cs
using System;
namespace myApp
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Hello World!");
Console.WriteLine("The current time is " + DateTime.Now);
}
}
}
是时候运行了,新的程序将打印当前时间:
C:\myApp>dotnet run
Hello World!
The current time is 2021/9/7 15:10:04
有时间了,再把 Learn
页面的其他几个简单教程试一下,把 Docs
下的入门教程看一遍。
首先安装C#的支持插件:
接着搜索 Ionide-fsharp
,安装F#的支持插件:
首先像前文一样初始化一个C#项目文件夹,即运行 dotnet new console
创建一个C#控制台程序。再在VS Code中打开项目文件夹,它会自动安装相应依赖,有 OmniSharp for Windows (.NET 4.6 / x64)
、.NET Core Debugger (Windows / x64)
、Razor Language Server (Windows / x64)
:
之后,同样在终端输入 dotnet run
来运行程序。
首先初始化一个F#项目文件夹,像前文一样,运行 dotnet new console -lang "F#"
创建一个控制台程序。如果遇到 error NU1100
这种无法解析的错误,建议看一下这个Issue:
之后,同样在终端输入 dotnet run
来运行程序,打印 "Hello world from F#"
这一消息。
Roslyn是微软开源的.NET编译器,支持C#和Visual Basic 代码编译,并提供丰富的代码分析API。OmniSharp是一组工具、编辑器集成和库,它们共同创建了一个生态系统,无论选择什么编辑器和操作系统,都可以得到出色的编程体验。
VS Code使用Roslyn和OmniSharp的强大功能,主要为.NET Core项目、MSBuild项目、C#脚本(CSX)提供更强的C#体验。在打开项目文件夹时,VS Code将自动加载最匹配的项目,或者进行询问:
当然也可以手动选择项目。状态栏将显示已加载的项目,还允许单击状态栏项目项并选择更改项目:
可供选择的方案包括:
project.json
文件,将打开一个.NET Core项目,VS代码将加载该项目以及引用的项目;*.sln
文件,将打开一个MSBuild项目。它将加载引用的 *.csproj
项目和兄弟或后代 project.json
文件,但不会加载从解决方案文件引用的其他项目文件。*.sln
、project.json
和 *.csx
文件(C#脚本),VS Code将尝试加载所有这些文件。加载项目后,将享受到以下舒适体验:
format on type, rename-refactoring
等,编辑特性的全描述见Basic Editing和Code Navigation;Ctrl+Space
,比如提取基类什么的;snippets
外,也可以自己定义 snippets for C#
。虽然我还没有用过User Defined Snippets这一功能,不过说不定哪天就会用了,先记下来;Ctrl+T
,敲击要搜索的符号,就能看到匹配的C#符号列表;Ctrl+.
。VS Code对C#项目类型的支持是不全的,有些项目如 ASP.NET MVC
不被支持。如果只是想要一个轻量级的工具,来编辑C#、F#文件,VS Code还是可以做到的;如果想要最好的开发体验,还是要下载Visual Studio。
……
等我看完这些内容后,再更新吧:
……
以后学C#、F#的时候,慢慢写吧。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。