[ASP.NETCore3框架揭秘]跨平台开发体验:Windows[上篇]
微软在千禧年推出 .NET战略,并在两年后推出第⼀个版本的.NET Framework和IDE(Visual Studio.NET 2002,后来改名为Visual Studio),如果你是⼀个资深的.NET程序员,相信传统的.NET应⽤的开发⽅式已经深深地烙印在你的脑⼦⾥⾯。.NET Core带来了全新的开发体验,但开发⽅式的差异根本不⾜以成为你快速跨⼊.NET Core 世界的门槛,因为在.NET Core在很多⽅⾯⽐传统的.NET Framework应⽤开发要简单。为了消除很多尚未接触过.NET Core的读者对未知世界的恐惧,我们先通过⼏个简单的Hello World应⽤让⼤家感受⼀下在Windows上的.NET Core全新的开发体验。
⼀、安装开发环境
.NET Core的介绍了在各种平台下安装开发环境的⽅式。总的来说,我们在不同的平台下开发.NET Core应⽤都需要安装相应的SDK和IDE。成功安装SDK之后,我们在本地将⾃动拥有.NET Core的运⾏时(CoreCLR)、基础类库以及相应的开发⼯具。
<是.NET Core SDK为我们提供的⼀个重要的命令⾏⼯具,我们在进⾏.NET Core应⽤的开发部署的时候将会频繁地使⽤它。提供了很多有⽤的命令,为了不“节外⽣枝”,我们就不对它们作系统介绍了,如果后续章节涉及到相关命令,我们再对它们作针对性的介绍。当.NET Core SDK安装结束之后,我们可以运⾏dotnet命令来确认SDK是否安装成功。如下图所⽰,我们执⾏dotnet --info命令查
看当前安装的.NET Core SDK的基本信息,显⽰的信息包含SDK的版本、运⾏时环境以及本机按照的所有运⾏时版本。
⼆、选择IDE
⾼效的开发⾃然离不开⼀个优秀的IDE,在这⽅⾯作为⼀个.NET开发者是幸福的,因为我们拥有宇宙第⼀的开发神器Visual Studio。虽然Visual Studio Code也不失为⼀个优秀的IDE,如果Windows依旧是我们主要的开发环境,我个⼈还是推荐使⽤Visual Studio。当我在敲这⾏⽂字的时候,Visual Studio的最新版本为2019。顺便说⼀
下,Visual Studio已经提供了Mac版本。
除了Visual Studio和Visual Studio Code,我们还可以使⽤⼀款叫做Rider的IDE来开发.NET Core应⽤。Rider是著名的JetBrains公司开发的⼀款专门针对.NET的IDE,我们可以利⽤它来开发ASP.NET、.NET Core、Xmarin以及Unity应⽤。和Visual Studio Code⼀样,Rider同样也是个跨平台的IDE,我们可以同时在Windows、Max OS X以及各种桌⾯版本的Linux Distribution上使⽤它。不过这不是⼀款免费的IDE,对它感兴趣的朋友可以在载30天试⽤版。
三、项⽬模板
dotnet .exe提供了基于 “脚⼿架(Scaffolding)”创建初始应⽤的new命令。如果需要开发某种类型的.NET Core应⽤,我们⼀般不会从第⼀⾏代码写起,⽽是利⽤这个命令帮助我们创建⼀个具有初始结构的应⽤程序。除此之外,在开发过程中如果需要添加某种类型的⽂件(⽐如各种类型的配置⽂件、MVC的视图⽂件等),我们也可以利⽤该命令来完成,通过这种⽅式添加的⽂件具有预定义的初始内容。.NET Core SDK在安装的时候为我们提供了⼀系列预定义的脚⼿架模板,我们可以按照如下图所⽰的⽅式执⾏命令⾏“dotnet new --list”列出当前安装的脚⼿架模板。
上图列出的就是NET Core SDK安装后提供的预定义的脚⼿架模板,这些模板⼤致分为Project Template和Item Template两类,前者为我们创建⼀个初始项⽬,后者则在⼀个现有项⽬中针对某种项⽬元素添加⼀个或者多个对应的⽂件。细⼼的读者可以从图2中看到dotnet new命令具有⼀个--type参数,该参数具有三个预定义的选项(project、item和other),其中前两个分别对应着Project和Item这两种模板类型。
如果这些预定义的脚⼿架模板不能满⾜我们的需求,我们还可以创建⾃定义的Project或者Item模板,⾄于⾃定义模板该如何定义,有兴趣的读者朋友可以参考。⾃定义模板最终会封装成⼀个NuGet包,我们可以通过执⾏dotnet new -i或者dotnet new --install命令对其进⾏安装。除此之外,对于已经安装的模板,我们可以通过执⾏dotnet new -u 或者dotnet new --uninstall命令将其卸载。
四、创建⼀个控制台程序
接下来我们利⽤dotnet new命令(dotnet new console -n helloworld)按照如下图所⽰的⽅式创建⼀个名为“helloworld”的控制台程序。和传统的.NET Framework应⽤⼀样,⼀个针对C#的.NET Core项⽬依然由⼀个对应的.csproj⽂件来定义,图3所⽰的helloworld.csproj就是这么⼀个⽂件。
对于传统的.NET Framework应⽤来说,即使是⼀个空的C#项⽬,定义该项⽬的.csproj⽂件在内容和结构上都是很复杂的,因为这个.csproj⽂件的结构并不是⾯向开发者设计的,我们也不会直接编辑这个⽂件,⽽是利⽤Visual Studio通过设置当前项⽬的某些属性间接地修改它。但是对于⼀个.NET Core应⽤来说,这个.csproj⽂件的结构变得相对简单并清晰了⼀些,以⾄于作为开发⼈员的我们经常会直接编辑它。对于前⾯我们执⾏脚⼿架命令创建的控制台程序,定义项⽬的helloworld.csproj⽂件的完整内容如下。
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>netcoreapp3.0</TargetFramework>
</PropertyGroup>
windows开发平台</Project>
如上⾯的代码⽚段所⽰,这个helloworld.csproj是⼀个根节点为<Project>的XML⽂件,与项⽬相关的属性可以分组定义在相应的<PropertyGroup>节点下。这个helloworld.csproj⽂件实际上只定义了两个属性,分别是通过<OutputType>和<TargetFramework>节点表⽰的编译输出类型和⽬标框架。由于我们创建的是⼀个针对.NET Core 3.0的可执⾏控制台应⽤,所以⽬标框架为“netcoreapp3.0”,编译输出为Exe。
我们执⾏的dotnet new命令⾏除了帮助我们创建⼀个空的控制台程序之外,还会帮助我们⽣成⼀些初始化代码,这就是项⽬⽬录下的这个Program.cs⽂件的内容。如下所⽰的代码⽚段给出了定义在这个⽂件的整个C#代码的定义,我们可以看到它定义了代表程序⼊⼝点的Main⽅法,并在这个⽅法中将字符串“Hello World”打印在控制台上。
using System;
namespace helloworld
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Hello World!");
}
}
}
通过执⾏脚⼿架命令⾏创建出来应⽤程序虽然简单,但是它却是⼀个完整的.NET Core应⽤,它可以在⽆需任何修改的情况下直接编译和运⾏。针对.NET Core应⽤的编译和运⾏同样是利⽤这个命令⾏来完成的。如下图所⽰,在进⼊当前项⽬所在⽬录之后,我们执⾏dotnet build命令对这个控制台应⽤实施编译,由于默认采⽤Debug 编译模式,所以编译⽣成的程序集会保存在\bin\debug\⽬录下。除此之外,针对不同⽬标框架编译⽣成的程序集是不同的,由于我们创建的是针对.NET Core 3.0的应⽤程序,所以最终⽣成的程序集被保存在“\bin\Debug\netcoreapp3.0\”⽬录下。
如果查看编译的输出⽬录,我们会发现两个同名(“helloworld”)的⽂件,⼀个是helloworld.dll,另⼀个是,后者在尺⼨上会⼤很多。很明显是⼀个可以直接运⾏的可执⾏⽂件,⽽helloworld.dll仅仅是⼀个单纯的动态链接库,需要借助命令⾏才能执⾏。
如图5所⽰,当我们在项⽬⽬录下执⾏dotnet run命令后,编译后的程序随即被执⾏,程序⼊⼝Main⽅法中指定的“Hello World”字符串被直接打印在控制台上。其实当我们执⾏dotnet run命令启动程序之前⽆需显⽰执⾏dotnet build对源代码实施编译,因为该命令会⾃动触发编译操作。在执⾏dotnet命令启动应⽤程序集的时候,我们也可以直接指定启动程序集的路径(dotnet bin\Debug\netcoreapp3.0\helloworld.dll)。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论