ASP.NET Core 3框架实战:Windows开发环境配置指南
微软在2000年发布了.NET战略,并在2002年推出了首个.NET Framework版本和配套的集成开发环境Visual Studio。对于长期从事.NET开发的程序员来说,传统的.NET开发模式已经形成了一种固定思维。.NET Core的出现带来了革命性的开发体验转变,但实际上这种变化并不像想象中那样难以跨越,因为.NET Core在很多方面比传统的.NET Framework更加简洁易用。为了帮助尚未接触过.NET Core的开发者消除顾虑,本文将通过几个基础的Hello World示例,展示在Windows平台上使用.NET Core进行开发的全新流程。
一、开发环境搭建
.NET Core官方文档详细说明了在各操作系统中配置开发环境的方法。总体而言,无论在哪个平台开发.NET Core应用,都需要安装对应的软件开发工具包和集成开发环境。完成SDK安装后,本地会自动具备.NET Core运行时(CoreCLR)、基础类库以及相关开发工具。
dotnet.exe是.NET Core SDK提供的核心命令行工具,在开发部署过程中会频繁使用它。该工具支持众多实用命令,本文不会逐一展开介绍,后续章节涉及特定命令时再详细说明。SDK安装完成后,可以通过执行dotnet命令验证安装是否成功。执行dotnet --info命令可以查看当前安装的SDK详细信息,包括SDK版本、运行时环境以及已安装的所有运行时版本。
二、集成开发环境选型
高效的开发工作离不开优秀的IDE支持。作为.NET开发者,我们拥有功能强大的Visual Studio开发工具。虽然Visual Studio Code同样是优秀的跨平台编辑器,但如果Windows仍是主要开发环境,建议优先选择Visual Studio。截至目前,Visual Studio的最新版本为2019。此外,Visual Studio还提供了Mac版本。
Visual Studio Code是一款完全免费且支持全平台(Windows、Mac和Linux)的代码编辑器,可从其官方网站直接下载。Visual Studio 2019提供社区版(Community)、专业版(Professional)和企业版(Enterprise),其中社区版免费使用,专业版和企业版需付费授权。Visual Studio的官方网站为https://www.visualstudio.com/。
除上述两款IDE外,还可以选择Rider进行.NET Core应用开发。Rider是JetBrains公司出品的专门面向.NET平台的集成开发环境,支持ASP.NET、.NET Core、Xamarin以及Unity等多种应用类型的开发。与Visual Studio Code相同,Rider同样支持跨平台使用,可在Windows、macOS及各种桌面版Linux发行版上运行。Rider并非免费软件,感兴趣的朋友可以在其官网下载30天试用版。
三、项目模板机制
dotnet.exe提供了基于"脚手架(Scaffolding)"机制创建初始应用的new命令。开发特定类型的.NET Core应用时,通常无需从零开始编写代码,可利用该命令创建具有初始结构的应用程序框架。在开发过程中,如果需要添加特定类型的文件(如各类配置文件、MVC视图文件等),也可以通过此命令完成,因为通过这种方式添加的文件会包含预定义的初始内容。.NET Core SDK安装时附带了一系列预定义的脚手架模板,可执行命令行"dotnet new --list"查看当前已安装的模板列表。
上图中展示的即是.NET Core SDK预置的脚手架模板,这些模板主要分为Project Template(项目模板)和Item Template(项模板)两类。前者用于创建完整的初始项目,后者则在现有项目中添加特定类型的文件。细心观察可以发现dotnet new命令包含一个--type参数,该参数有三个预定义选项(project、item和other),分别对应上述两种模板类型。
若预置模板无法满足实际需求,还可以创建自定义的Project或Item模板,具体的自定义方法可参考.NET Core官方文档。自定义模板最终会封装为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文件定义项目结构和配置。下面展示的helloworld.csproj即为该项目的定义文件。
对于传统的.NET Framework项目,即使是空的C#项目,其.csproj文件的内容和结构也相当复杂。这是因为该文件的结构并非为开发者直接编辑而设计,通常需要通过Visual Studio的项目属性界面间接修改。然而,.NET Core应用的.csproj文件结构变得更加简洁清晰,开发人员经常可以直接编辑该文件。以下是使用脚手架命令创建的控制台程序的项目定义文件完整内容:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>netcoreapp3.0</TargetFramework>
</PropertyGroup>
</Project>
如上所示,helloworld.csproj是一个以<Project>为根节点的XML文件,与项目相关的属性可按类别定义在相应的<PropertyGroup>节点下。该项目文件仅定义了两个属性:分别通过<OutputType>节点指定的编译输出类型,以及通过<TargetFramework>节点指定的目标框架。由于创建的是针对.NET Core 3.0的可执行控制台应用,目标框架设置为"netcoreapp3.0",编译输出类型为Exe。
执行dotnet new命令不仅创建了空的控制台程序,还会生成初始化代码,即项目目录下的Program.cs文件。以下是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.exe命令行完成。进入项目所在目录后,执行dotnet build命令进行编译。由于默认采用Debug编译模式,编译生成的程序集会保存在\bin\debug\目录下。针对不同目标框架编译生成的程序集路径不同,本例创建的是针对.NET Core 3.0的应用程序,因此生成的程序集保存在"\bin\Debug\netcoreapp3.0\"目录下。
查看编译输出目录,会发现两个同名文件("helloworld"),分别是helloworld.dll和helloworld.exe,后者文件体积明显更大。helloworld.exe是可直接运行的可执行文件,而helloworld.dll是单纯的动态链接库,需要通过dotnet.exe命令行执行。
如图5所示,在项目目录下执行dotnet run命令后,编译后的程序随即运行,Main方法中定义的"Hello World"字符串被输出到控制台。实际上,执行dotnet run命令时无需事先手动执行dotnet build进行编译,因为该命令会自动触发编译过程。启动应用程序时,也可以直接指定程序集路径(如dotnet bin\Debug\netcoreapp3.0\helloworld.dll)。