Asp.Net Core 轻松学系列-3项目目录和文件作用介绍
前言
上一章介绍了 Asp.Net Core 的前世今生,并创建了一个控制台项目编译并运行成功,本章的内容介绍 .NETCore 的各种常用命令、Asp.Net Core MVC 项目文件目录等信息,通过对命令的学习和操作,对项目结构的认识,进一步理解 Asp.Net Core 的运行机制和项目框架。
创建项目的命令
首先来认识一下创建项目可使用的各种命令,.NETCore 的命令都以 dotnet 打头,这很好理解,输入 dotnet xxx,就是执行环境变量指向的 C:\Program Files\dotnet\dotnet.exe 程序,然后给 dotnet.exe 提供参数运行。建议初学者以下命令逐个执行一遍,加深记忆和理解,如果实在记不住也没有关系,可以通过在控制台中输入命令
1.帮助命令
dotnet --help
// 或者
dotnet optional --help
//  如
dotnet new --help // 了解创建项目的帮助文档
2. dotnet new 创建各种类型的项目
| 模板 | 短名称 | 语言 | 
|---|---|---|
| 控制台应用程序 | console | [C#]、F#、VB | 
| 类库 | classlib | [C#]、F#、VB | 
| 单元测试项目 | mstest | [C#]、F#、VB | 
| xUnit 测试项目 | xunit | [C#]、F#、VB | 
| Razor 页 | page | [C#] | 
| MVC ViewImports | viewimports | [C#] | 
| MVC ViewStart | viewstart | [C#] | 
| ASP.NET Core 空 | web | [C#],F# | 
| ASP.NET Core Web应用程序(Model - View - Controller) | mvc | [C#],F# | 
| ASP.NET Core Web 应用程序 | razor | [C#] | 
| 含 Angular 的 ASP.NET Core | angular | [C#] | 
| 含 React.js 的 ASP.NET Core | react | [C#] | 
| 含 React.js 和 Redux 的 ASP.NET Core | reactredux | [C#] | 
| ASP.NET Core Web API | webapi | [C#],F# | 
| Razor 类库 | razorclasslib | [C#] | 
| global.json 文件 | globaljson | |
| NuGet 配置 | nugetconfig | |
| Web 配置 | webconfig | |
| 解决方案文件 | sln | 
- 更多命令,见
 
https://docs.microsoft.com/zh-cn/dotnet/core/tools/dotnet-new?tabs=netcore21
最最常用的命令有 4 个,这些命令需要在项目根目录执行
1. 创建一个 asp.net core mvc 项目,指定项目名称为 MyMvc
dotnet new mvc  -o MyMvc
2. 还原项目引用包
dotnet restore
3. 编译项目
dotnet build
4. 运行项目
dotnet run
Asp.Net Core 项目结构介绍
1. 首先使用上面的命令创建一个 Asp.Net Core MVC 项目
dotnet new mvc -o MyMvc
2. 创建成功,得到一个新的 Asp.Net Core MVC 项目

打开项目文件夹,进入项目,看到一个标准的 Asp.Net Core MVC 项目结构如下

介绍各个目录和文件的作用
1. 三层架构目录
/Models
/ViewS
/Controllers
这是一个和 Asp.Net MVC 相同的三层架构 MVC 项目,包含了 模型(Models)、视图(Views)、控制器(Controllers),简单来说就是 Models 内可以定义视图(Views)通过 html 传递到 Controllers 内控制器的实体对象
2. obj 目录
该目录用于存放相关配置文件暂存项,包引用项目配置说明
3. Properties 目录
该目录用于存放程序集信息,运行配置文件、内部资源等文件,该目录在创建之初,会默认创建一个 launchSettings.json ,该文件包含了一些程序启动时的信息
{
  "iisSettings": {
    "windowsAuthentication": false,
    "anonymousAuthentication": true,
    "iisExpress": {
      "applicationUrl": "http://localhost:23090",
      "sslPort": 44351
    }
  },
  "profiles": {
    "IIS Express": {
      "commandName": "IISExpress",
      "launchBrowser": true,
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development"
      }
    },
    "MyMvc": {
      "commandName": "Project",
      "launchBrowser": true,
      "applicationUrl": "https://localhost:5001;http://localhost:5000",
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development"
      }
    }
  }
}
4. 无需理解太多,直接在项目根目录下输入命令启动 MVC 项目
dotnet run
你将会得到如下窗口输出信息

重点关注控制台输出的一个信息
Now listening on: https://localhost:5001
Now listening on: http://localhost:5000
该信息表示 Asp.Net Core MVC 项目已成功运行于 5001/5000 端口下,在浏览器中打开该连接地址
https://localhost:5001
再图看看 launchSettings.json 中的信息,找到下面的信息,你就了解了这个文件的作用是配置项目运行端口等信息的
"applicationUrl": "https://localhost:5001;http://localhost:5000",
5. wwwwroot
该目录存放视图层(Views) html 页面引用的静态资源,如图片、样式表、脚本文件(js)等
6. appsettings.json 和 appsettings.Development.json
项目主配置文件,两个文件格式完全相同,实际上 appsettings.Development.json 表示 开发时运行程序的配置文件,使用 appsettings.{env}.json,可以很方便进行运行环境的切换,以加载不同的配置文件
7. MyMvc.csproj 项目描述文件,用记事本打开它,看看
<Project Sdk="Microsoft.NET.Sdk.Web">
  <PropertyGroup>
    <TargetFramework>netcoreapp2.1</TargetFramework>
  </PropertyGroup>
  <ItemGroup>
    <PackageReference Include="Microsoft.AspNetCore.App" />
    <PackageReference Include="Microsoft.AspNetCore.Razor.Design" Version="2.1.2" PrivateAssets="All" />
  </ItemGroup>
</Project>
第一行表示项目是一个 web 应用程序,当前使用的 SDK 版本为 netcoreapp2.1,配置节点 ItemGroup 包含了项目引用的 Nuget 包,如有新的包引用,可以加入该 ItemGroup 配置节
8.Program.cs 文件,程序运行主入口,Main 方法所在
9.Startup.cs
- 该文件是默认文件,不可随意删除,在此文件中可以以包含服务配置、定义请求处理管道的重要操作。
 
结语
总的来说,这是一篇小白入门答疑,简单的介绍了一个标准的 Asp.Net Core MVC 项目都包含了哪些文件和目录,以及各自的作用,希望对未入门的同学有点帮助
Asp.Net Core 轻松学系列-3项目目录和文件作用介绍的更多相关文章
- Asp.Net Core 轻松学系列-1阅读指引目录
		
https://www.cnblogs.com/viter/p/10474091.html 目录 前言 1. 从安装到配置 2. 业务实现 3. 日志 4. 测试 5. 缓存使用 6.网络和通讯 7. ...
 - Asp.Net Core 轻松学系列-5利用 Swagger 自动生成接口文档
		
目录 前言 结语 源码下载 前言 目前市场上主流的开发模式,几乎清一色的前后端分离方式,作为服务端开发人员,我们有义务提供给各个客户端良好的开发文档,以方便对接,减少沟通时间,提高开发效率:对 ...
 - Asp.Net Core 轻松学系列-4玩转配置文件
		
目录 前言 另类方式使用 hosting.json 使程序运行于多个端口 结语 前言 在 .NET Core 项目中,配置文件有着举足轻重的地位:与.NetFramework 不同的是,.NE ...
 - Asp.Net Core 轻松学系列-2从安装环境开始
		
Asp.Net Core 介绍 Asp.Net Core是微软新一代的跨平台开发框架,基于 C# 语言进行开发,该框架的推出,意味着微软从系统层面正式进击 Linux 服务器平台:从更新速度开 ...
 - Asp.Net Core 轻松学-项目目录和文件作用介绍
		
前言 上一章介绍了 Asp.Net Core 的前世今生,并创建了一个控制台项目编译并运行成功,本章的内容介绍 .NETCore 的各种常用命令.Asp.Net Core MVC 项目文件目录 ...
 - Asp.NETCore轻松学系列阅读指引目录
		
前言 耗时两个多月,坚持写这个入门系列文章,就是想给后来者更好更快的上手体验,这个系列可以说是从入门到进阶,适合没有 .NETCore 编程经验到小白同学,也适合从 .NET Framework 迁移 ...
 - Asp.Net Core 轻松学-使用MariaDB/MySql/PostgreSQL和支持多个上下文对象
		
前言 在上一篇文章中(Asp.Net Core 轻松学-10分钟使用EFCore连接MSSQL数据库)[https://www.cnblogs.com/viter/p/10243577.html],介 ...
 - Asp.Net Core 轻松学-利用文件监视进行快速测试开发
		
前言 在进行 Asp.Net Core 应用程序开发过程中,通常的做法是先把业务代码开发完成,然后建立单元测试,最后进入本地系统集成测试:在这个过程中,程序员的大部分时间几乎都花费在开发.运行 ...
 - 如何从40亿整数中找到不存在的一个  webservice  Asp.Net Core 轻松学-10分钟使用EFCore连接MSSQL数据库  WPF实战案例-打印  RabbitMQ与.net core(五) topic类型 与 headers类型 的Exchange
		
如何从40亿整数中找到不存在的一个 前言 给定一个最多包含40亿个随机排列的32位的顺序整数的顺序文件,找出一个不在文件中的32位整数.(在文件中至少确实一个这样的数-为什么?).在具有足够内存的情况 ...
 
随机推荐
- xss绕过姿势
			
#未完待续... 00x1.绕过 magic_quotes_gpc magic_quotes_gpc=ON 是php中的安全设置,开启后会把一些特殊字符进行轮换, 比如: ' 会被转换为 \' 再比如 ...
 - [Java复习] 分布式事务 Part 2
			
分布式事务了解吗?如果解决分布式事务问题的? 面试官心里: 只要聊到你做了分布式系统,必问分布式事务,起码得知道有哪些方案,一般怎么来做,每个方案的优缺点是什么. 为什么要有分布式事务? 分布式事务实 ...
 - 随机数据构造-Faker
			
from faker import Faker # fake = Faker() #本地化处理 fake = Faker('zh_CN') # print(fake.name()) # print(f ...
 - CentOS 7部署 Ceph分布式存储架构
			
一.概述 随着OpenStack日渐成为开源云计算的标准软件栈,Ceph也已经成为OpenStack的首选后端存储.Ceph是一种为优秀的性能.可靠性和可扩展性而设计的统一的.分布式文件系统. cep ...
 - 123457123456#0#-----com.threeapp.XianshiDaDiShu03-----现实版打地鼠03
			
com.threeapp.XianshiDaDiShu03-----现实版打地鼠03
 - laravel原生sql
			
转自:https://www.cnblogs.com/zouzhe0/p/6307077.html DB::insert(, ']); $user = DB::]); //我们还 可以看到在执行查询的 ...
 - MySQL学习笔记——MySQL5.7的启动过程(一)
			
MySQL的启动函数在 sql/main.cc 文件中. main.cc: extern int mysqld_main(int argc, char **argv); int main(int ar ...
 - 完全解读 margin 标签
			
你真的了解margin吗?你知道margin有什么特性吗?你知道什么是垂直外边距合并?margin在块元素.内联元素中的区别?什么时候该用 padding而不是margin?你知道负margin吗?你 ...
 - iOS-图形绘制(全)
			
画阴影: CGContextRef context = UIGraphicsGetCurrentContext(); CGContextSetFillColorWithColor(contex ...
 - nfs搭建;nfs监控;mount对于nfs的相应配置
			
nfs搭建 https://www.cnblogs.com/lms0755/p/9211585.html https://www.jianshu.com/p/e47cccbb3ae5 https:// ...