.NET8 Hello World!
使用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函数,不明确标识命名空间,代码会被置于顶级命名空间中。主要用于编写简单的脚本和小型应用程序。对于复杂的应用程序,仍然建议使用传统的类和方法来组织代码。

MapGet将RouteEndpoint添加到IEndpointRouteBuilder,以匹配指定模式的HTTP GET请求
public static RouteHandlerBuilder MapGet(this IEndpointRouteBuilder endpoints,[StringSyntax("Route")] string pattern,Delegate handler)
该方法有两个参数:
- pattern:路由,支持模式路由
- handler:一个委托,路由匹配后的处理逻辑
即当路由命中时,会被对应委托处理。(源码尽量不在文档中分析,后续会出视频)
2.1.2 appsettings
appsettings.json和appsettings.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!的更多相关文章
- net8:XML的读写操作【广告控件的XML文件实例】
原文发布时间为:2008-08-05 -- 来源于本人的百度文章 [由搬家工具导入] 【用了datalist控件,datalist控件自己学会,主要知道其他按钮COMMANDNAME属性应该改为edi ...
- Linux安装centos,网络net8模式ping不通www.baidu.com或者ping不通主机
1.Linux安装centos,网络net8模式ping不通www.baidu.com或者ping不通主机. 我使用的是net8模式.配置如下所示,保证可以ping通www.baidu.com或者pi ...
- 发布 Net8预览版1(Announcing .NET 8 Preview 1)
发布 net8预览版1(Announcing .NET 8 Preview 1) 1.对Net持续看好,对未来更加充满信心. 2.我主要关注Asp.Net Core .NET 8 中的新增功能 Wha ...
- .Net8的快速JIT,分层编译,R2R的设置
前言 本篇通过一些简单的JIT设置,比如快速JIT,适用于循环的快速 JIT,分层编译,R2R等核心内容设置,快速进入.Net8核心区域. 概括 1.快速JIT 什么是快速JIT,顾名思义,被Rosy ...
- jre1.8使用ikvm.net8将jar转换为dll以供c#调用
由于合作方使用.net编程,jar包不能用,需要转换成dll格式,来回转换了十几个dll文件,终于生成了一个可用的.在这里将走过的弯弯绕绕总结下,希望遇到相似问题的同好们,能走得顺利些. 版本问题: ...
- net8:简易的文件磁盘管理操作一(包括文件以及文件夹的编辑创建删除移动拷贝重命名等)
原文发布时间为:2008-08-07 -- 来源于本人的百度文章 [由搬家工具导入] using System;using System.Data;using System.Configuration ...
- net8:简易的文件磁盘管理操作二(包括文件以及文件夹的编辑创建删除移动拷贝重命名等)
原文发布时间为:2008-08-07 -- 来源于本人的百度文章 [由搬家工具导入] using System;using System.Data;using System.Configuration ...
- net8:文本文件的创建及其读写
原文发布时间为:2008-08-06 -- 来源于本人的百度文章 [由搬家工具导入] using System;using System.Data;using System.Configuration ...
- Oracle 11g静默安装简明版
环境:RHEL 6.5 + Oracle 11.2.0.4 1. 初步处理应答文件 2. 静默安装软件 3. 静默安装监听 4. 静默dbca建库 说明: 本文默认安装软件前的步骤已经设置完毕 如果没 ...
- Oracle常用命令大全(很有用,做笔记)
一.ORACLE的启动和关闭 1.在单机环境下 要想启动或关闭ORACLE系统必须首先切换到ORACLE用户,如下 su - oracle a.启动ORACLE系统 oracle>svrmgrl ...
随机推荐
- three.js使用Instanced Draw+Frustum Cull+LOD来渲染大场景(开源)
大家好,本文使用three.js实现了渲染大场景,在移动端也有较好的性能,并给出了代码,分析了关键点,感谢大家~ 关键词:three.js.Instanced Draw.大场景.LOD.Frustum ...
- 力扣122(java&python)-买卖股票的最佳时机 II(中等)
题目: 给你一个整数数组 prices ,其中 prices[i] 表示某支股票第 i 天的价格. 在每一天,你可以决定是否购买和/或出售股票.你在任何时候 最多 只能持有 一股 股票.你也可以先购买 ...
- TiDB Vector 抢先体验之用 TiDB 实现以图搜图
本文首发自 TiDB 社区专栏:https://tidb.net/blog/0c5672b9 前言 最早知道 TiDB 要支持向量化的消息应该是在23年10月份左右,到第一次见到 TiDB Vecto ...
- 链栈的实现 C语言/C++
堆栈的链式存储C/C++实现--链栈 与顺序栈相比,链栈的优点在于不存在栈满上溢的问题.链栈通常使用单链表实现,进栈.出栈操作就是在单链表表头的 插入.删除操作.用单链表实现链栈时,使用不带头结点的单 ...
- 开箱即用!Linux 内核首个原生支持,让你的容器体验飞起来!| 龙蜥技术
简介: 本文将从 Nydus 架构回顾.RAFS v6 镜像格式和 EROFS over Fscache 按需加载技术三个角度来分别介绍这一技术的演变历程. 文/阿里云内核存储团队,龙蜥社区高性能存储 ...
- 重磅发布 | Serverless 应用中心:Serverless 应用全生命周期管理平台
简介:Serverless 应用中心,是阿里云 Serverless 应用全生命周期管理平台.通过 Serverless 应用中心,用户在部署应用之前无需进行额外的克隆.构建.打包和发布操作,即可快 ...
- 持续定义Saas模式云数据仓库+BI
云数据仓库概述 今天和大家一起探讨一下我们Saas模式下云数据仓库加上商业智能BI能有什么新的东西出来.我们先来看一下云数据仓库的一些概述.预测到2025年, 全球数据增长至175ZB, 中国数据量增 ...
- LlamaIndex 探索视频系列
如果您喜欢通过视频学习,现在正是查看我们的"探索 LlamaIndex"系列的好时机.否则,我们建议您继续阅读"理解 LlamaIndex"教程. 自下而上开发 ...
- JavaScript 如何实现一个响应式系统
JavaScript 如何实现一个响应式系统 第一阶段目标 数据变化重新运行依赖数据的过程 第一阶段问题 如何知道数据发生了变化 如何知道哪些过程依赖了哪些数据 第一阶段问题的解决方案 我们可用参考现 ...
- WPF 简单聊聊如何使用 DrawGlyphRun 绘制文本
在 WPF 里面,提供的使用底层的方法绘制文本是通过 DrawGlyphRun 的方式,此方法适合用在需要对文本进行精细控制的定制化控件上.此方法特别底层而让调用方法比较复杂,本文告诉大家一些简单的使 ...