• 构建极简的 ASP.NET Core API 服务
  • 发布于 1周前
  • 44 热度
    0 评论
从传统到极简:.NET 的演进之路
作为一名 C# 开发者,你一定对下面这段熟悉的代码结构非常熟悉:
using System;
namespace MyConsoleApp
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Hello, World!");
            // Add your application logic here
        }
    }
}
这段代码展示了一个典型的 .NET 项目结构:
1.引入 System 命名空间
2.自定义命名空间 MyConsoleApp
3.定义 Program 类,其中包含静态的 Main 方法,接收字符串数组作为入参
4.在 Main 方法中打印出 “Hello, World!”
5.这个类文件是应用的入口点
同时,项目中通常还包含一个 .csproj 文件,它是 XML 格式的项目文件,用来管理:
1. .NET 使用的版本
2. 程序集名称
3.第三方包依赖
4.编译配置等项目元数据
同时还定义了一个 .csproj 的文件,这个文件是一个 xml 的文件,来管理我们整个项目的一些配置,例如:.NET 使用的版本、程序集的名字以及项目依赖包。

.NET 6 之后:迎来“简洁风”
在 .NET 6 之后,开启了一种全新的启动项目模式,看上去比之前的清爽了很多。但是它依然绑定一大堆文件,例如 .csproj:
using System;
Console.WriteLine("Hello, World!");
这个改动不再需要手动声明 Main 方法,甚至类名和命名空间也可以省略,语法更直观、代码更简洁。但它仍然依赖 .csproj 项目文件。你需要使用 dotnet new console 创建项目,并用 dotnet run 运行。

.NET 10:真正做到“一文件运行”
在 .NET 10 中,微软进一步突破:你现在可以直接运行一个 .cs 文件,而不需要任何 .csproj 或解决方案文件。例如:
Console.WriteLine("Hello, World!");
你只需在命令行中执行:
dotnet run MyApp.cs
这样就能运行你的应用程序。这种极简模式非常适合:
1.编写小型工具
2.脚本型应用

3.快速验证思路


如何引入第三方包?
如果你希望在独立 .cs 文件中引用第三方包,.NET 提供了 #:package 指令进行包管理。例如:
#:package Humanizer@2.*

using Humanizer;
var started = DateTimeOffset.Parse("2025-05-19");
var since = DateTimeOffset.Now - started;
Console.WriteLine($"Started {since.Humanize()} ago");
这段代码引用了 Humanizer 库,将时间差格式化为人类可读的语句。

构建极简的 ASP.NET Core API 服务
你也可以用相似方式构建 ASP.NET Core Web API 应用,首先指定 SDK 和依赖包:
#:sdk Microsoft.NET.Sdk.Web
#:package Microsoft.AspNetCore.OpenApi@10.0.0-preview.4.*

var builder = WebApplication.CreateBuilder(args);
builder.Services.AddOpenApi();
var app = builder.Build();
app.MapGet("/", () => "Hello World!");
app.Run();
这段代码展示了一个无需 .csproj 文件的极简 Web API 服务。

小结
.NET 的发展方向正在朝着更灵活、更轻量、更脚本化的方向演进。从传统的项目结构,到无需显式 Main 方法,再到直接运行 .cs 文件并支持包引用和 Web 服务,.NET 正在成为真正现代化的开发平台。欢迎在评论区分享你看法,一起交流进步!github地址:https://github.com/bingbing-gui
用户评论