1.项目文件包括以下几个部分:
根目录是一个解决方案
Dependencies是依赖项文件
Properties存储 launchSetting.json,是涉及到如何编译、运行项目的相关配置文件
wwwroot是ASp.net core项目唯一可以被直接访问的项目位置
Controllers、Models、Views是传承了Asp.net 的传统,MVC文件夹
appsettings.json用于配置项目的运行时等相关信息
Program.cs及Startup.cs相当重要,后文详细分析
2.详解.csproj文件
跟asp.net 项目相比,它的变化是,
不再含有guid了!
隐式文件编译,不需要一个个列举出来!
无需提供路径!
根节点<Project>向SDK指明,本项目是一个web项目。
<TargetFramework>是设置的目标Framework运行版本,我们运行在netcore2.0版本上,所以设置netcoreapp2.0,因为asp.net core项目也可以运行在.net framework上,如果你要运行在.net framework 4.6.1上,你可以直接改为net461
<PackageReference>是你所引入的NuGet包
最后是一些附加的工具
3.Asp.net core项目的Entry Point ---Program.cs文件解析
实际上,Asp.net core Web应用程序最终是一个命令行程序,这也是Asp,net core能够跨平台的主要原因!(传闻Asp.net core3.0版本将支持Winform及WPF,你觉得在Linux上能实现么?那岂不是微软实现桌面程序大一统了?!Winform和WPF能托管在命令行么?显然不现实了!)
Main函数直接调用BuildWebHost函数创建并配置托管程序了,最后直接启动HTTP服务器进行监听,我们直接看下面的函数。
BuildWebHost使用了WebHostBuilder创建了一个配置了相关的托管信息。CreateDefaultBuilder包含了很多默认的配置信息。
UserStartup函数让一些配置托管在了Startup.cs类中去配置了。
最后调用Build()配置完成。
基本上,Program.cs配置的是一些基础的设置,包括日志、应用配置、代理服务器配置、根目录配置、等等。
而涉及到的依赖注入,中间件及管道,MVC等相关配置都会在Startup.cs中进行配置
Program.cs基本上不怎么变化,Startup需要很多的配置。
4.Asp.net core项目Startup.cs文件解析
Startup.cs文件主要完成两个方面的配置:
在ConfigureServices()中配置你所提供的Service的注册
在Configure()中配置MVC管道的相关配置
注:在ConfigureServices中配置的服务,在Configure中均可使用(这里用到了反射的相关技术,也就是类似的DI)