​ 使用ASP.NET Core Web Application模板创建的Empty项目如下:

​ 这是一个最简单的Web项目,运行起来会在根路径响应Hello World!

2.1.1 Programe

​ 代码非常简洁,但内容非常不简单。

var builder = WebApplication.CreateBuilder(args); // 1 创建WebApplication构建者
var app = builder.Build(); // 2 构建WebApplication app.MapGet("/", () => "Hello World!"); // 3 添加路由处理 app.Run(); // 4 启动

Program文件看不到Main函数,是因为.NET 5+支持顶级语法(Top-level statements)。

​ 通过反编译可以发现,并不是取消了Main函数,顶级语法只是一个语法糖,编译器会自动为我们生成Main函数,不明确标识命名空间,代码会被置于顶级命名空间中。主要用于编写简单的脚本和小型应用程序。对于复杂的应用程序,仍然建议使用传统的类和方法来组织代码。

MapGetRouteEndpoint添加到IEndpointRouteBuilder,以匹配指定模式的HTTP GET请求

public static RouteHandlerBuilder MapGet(this IEndpointRouteBuilder endpoints,[StringSyntax("Route")] string pattern,Delegate handler)

​ 该方法有两个参数:

  • pattern:路由,支持模式路由
  • handler:一个委托,路由匹配后的处理逻辑

​ 即当路由命中时,会被对应委托处理。(源码尽量不在文档中分析,后续会出视频

2.1.2 appsettings

appsettings.jsonappsettings.Development.json都是配置文件,其中appsettings.Development.json,Development对应的是环境变量,常见的还有Production。ASP.NET Core 的配置系统会根据 ASPNETCORE_ENVIRONMENT 环境变量的值来确定当前的环境,如果当前环境是 "Development",则会加载 appsettings.Development.json 文件;如果当前环境是 "Production",则会加载 appsettings.Production.json 文件。

当然你可以自定义更多环境,例如Testing,Staging,UAT等等,你可以通过修改环境变量ASPNETCORE_ENVIRONMENT达到目的,后续的章节我会带大家深入ASP.NET Core的配置系统。

Logging节点可以配置日志相关,比如现在过滤了日志级别,将Microsoft.AspNetCore命名空间下的所有Warning级别及其它命名空间Information级别以下的日志忽略。"AllowedHosts": "*"表示允许任意host访问。

2.1.3 launchSettings

launchSettings.json 是 ASP.NET Core 项目中的一个配置文件,用于定义应用程序的启动设置。

​ 如果不想加载 launchSettings.json 的配置,可以通过命令 dotnet run -no-launch-profile 实现,但当前环境就会从Development变为默认的Production

2.1.4 csproj

.csproj 是所有c#项目都有的一个xml项目文件,用于表达项目的结构、依赖项、编译选项等信息。

Sdk 表示我们正在用的sdk是Microsoft.NET.Sdk.Web

Nullable 可空是 C# 8.0 引入的一个新特性,将Nullable设置为enable会开启可空引用类型检测,可以帮助开发人员在编译时捕获潜在的空引用错误,提高代码的健壮性和可靠性。作者本人不推荐在老项目中开启此配置。

ImplicitUsings 会根据代码中使用的类型自动添加相应的命名空间引用,用于简化代码中的命名空间引用。还可以通过 ImplicitUsingNamespace 自定义自动Using命名空间

.NET8 Hello World!的更多相关文章

  1. net8:XML的读写操作【广告控件的XML文件实例】

    原文发布时间为:2008-08-05 -- 来源于本人的百度文章 [由搬家工具导入] 【用了datalist控件,datalist控件自己学会,主要知道其他按钮COMMANDNAME属性应该改为edi ...

  2. Linux安装centos,网络net8模式ping不通www.baidu.com或者ping不通主机

    1.Linux安装centos,网络net8模式ping不通www.baidu.com或者ping不通主机. 我使用的是net8模式.配置如下所示,保证可以ping通www.baidu.com或者pi ...

  3. 发布 Net8预览版1(Announcing .NET 8 Preview 1)

    发布 net8预览版1(Announcing .NET 8 Preview 1) 1.对Net持续看好,对未来更加充满信心. 2.我主要关注Asp.Net Core .NET 8 中的新增功能 Wha ...

  4. .Net8的快速JIT,分层编译,R2R的设置

    前言 本篇通过一些简单的JIT设置,比如快速JIT,适用于循环的快速 JIT,分层编译,R2R等核心内容设置,快速进入.Net8核心区域. 概括 1.快速JIT 什么是快速JIT,顾名思义,被Rosy ...

  5. jre1.8使用ikvm.net8将jar转换为dll以供c#调用

    由于合作方使用.net编程,jar包不能用,需要转换成dll格式,来回转换了十几个dll文件,终于生成了一个可用的.在这里将走过的弯弯绕绕总结下,希望遇到相似问题的同好们,能走得顺利些. 版本问题: ...

  6. net8:简易的文件磁盘管理操作一(包括文件以及文件夹的编辑创建删除移动拷贝重命名等)

    原文发布时间为:2008-08-07 -- 来源于本人的百度文章 [由搬家工具导入] using System;using System.Data;using System.Configuration ...

  7. net8:简易的文件磁盘管理操作二(包括文件以及文件夹的编辑创建删除移动拷贝重命名等)

    原文发布时间为:2008-08-07 -- 来源于本人的百度文章 [由搬家工具导入] using System;using System.Data;using System.Configuration ...

  8. net8:文本文件的创建及其读写

    原文发布时间为:2008-08-06 -- 来源于本人的百度文章 [由搬家工具导入] using System;using System.Data;using System.Configuration ...

  9. Oracle 11g静默安装简明版

    环境:RHEL 6.5 + Oracle 11.2.0.4 1. 初步处理应答文件 2. 静默安装软件 3. 静默安装监听 4. 静默dbca建库 说明: 本文默认安装软件前的步骤已经设置完毕 如果没 ...

  10. Oracle常用命令大全(很有用,做笔记)

    一.ORACLE的启动和关闭 1.在单机环境下 要想启动或关闭ORACLE系统必须首先切换到ORACLE用户,如下 su - oracle a.启动ORACLE系统 oracle>svrmgrl ...

随机推荐

  1. HarmonyOS 性能优化

    如何合理使用动效来获得更好的性能 组件转场动画使用 transition: 推荐使用转场动画(transition)而不是组件动画(animateTo),因为 transition 只需要在条件改变时 ...

  2. ASP.NET CORE 框架揭秘读书笔记系列——命令行程序的创建(一)

    一.dotnet --info 查看本机开发环境 dotnet --info  会显示本机安装的SDK版本.运行时环境.运行时版本 二.利用命令行创建.NET项目 我们不仅可以利用脚手架模版创建各种类 ...

  3. 2024-04-21:用go语言,给一棵根为1的树,每次询问子树颜色种类数。 假设节点总数为n,颜色总数为m, 每个节点的颜色,依次给出,整棵树以1节点做头, 有k次查询,询问某个节点为头的子树,一共

    2024-04-21:用go语言,给一棵根为1的树,每次询问子树颜色种类数. 假设节点总数为n,颜色总数为m, 每个节点的颜色,依次给出,整棵树以1节点做头, 有k次查询,询问某个节点为头的子树,一共 ...

  4. Oracle对一个字符串中的数字与非数字进行分割

    Oracle对一个字符串中的数字与非数字进行分割 Oracle中对一个字符串中的数字与非数字进行分割 思路很简单,就是将字符串分成数字与非数字 则只要将字符串中的数字全部换成空,就是分割后的非数字字符 ...

  5. 【编程】C++ 常用容器以及一些应用案例

    介绍一些我常用的C++容器和使用方法,以及使用案例.blog 1 概述 容器(Container)是一个存储其他对象集合的持有者对象.容器以类模板实现,对支持的元素类型有很大的灵活性.容器管理元素的存 ...

  6. iLogtail社区版使用入门 - 采集MySQL Binlog

    简介: MySQL Binlog记录了MySQL的变更日志,业界也有一些方案来同步Binlog的数据,如Canal.MaxWell.DTS等.不同的工具可以实现不同的目标,iLogtail也提供了便捷 ...

  7. MaxCompute中如何通过logview诊断慢作业

    ​建模服务,在MaxCompute执行sql任务的时候有时候作业会很慢,本文通过查看logview排查具体任务慢的原因 在这里把任务跑的慢的问题划分为以下几类 资源不足导致的排队(一般是包年包月项目) ...

  8. 致敬 hacker |盘点内存虚拟化探索之路

    ​简介: 内存虚拟化相比裸机,仍然存在较大差异,是当下值得关注的问题! ​ 云与虚拟化 云计算是通过 Internet 服务的方式提供动态可伸缩资源的计算模式,经过多年的发展已成为企业 IT 技术的重 ...

  9. [FAQ] html 的 select 标签 option 获取选中值的两种方式及区别

      Q: 对于一个 html 的 select 标签节点 class是module_select,获取选中值使用  $('.module_select').find('option:selected' ...

  10. 7.deployment扩容-查看pod使用的CPU-统计ready状态节点数量

    官方文档:https://kubernetes.io/zh-cn/docs/tasks/run-application/scale-stateful-set/题目1: 将名为loadbalancer的 ...