摘要:usingSystem;namespaceMyConsoleApp{classProgram{staticvoidMain(stringargs){Console.WriteLine("Hello, World!");// Add your applicati
作为一名 C# 开发者,你一定对下面这段熟悉的代码结构非常熟悉:
usingSystem;namespaceMyConsoleApp
{
classProgram
{
staticvoidMain(string args)
{
Console.WriteLine("Hello, World!");
// Add your application logic here
}
}
}
这段代码展示了一个典型的 .NET 项目结构:
引入 System 命名空间
自定义命名空间 MyConsoleApp
定义 Program 类,其中包含静态的 Main 方法,接收字符串数组作为入参
在 Main 方法中打印出 “Hello, World!”
这个类文件是应用的入口点
同时,项目中通常还包含一个 .csproj 文件,它是 XML 格式的项目文件,用来管理:
.NET 使用的版本
程序集名称
第三方包依赖
编译配置等项目元数据
同时还定义了一个 .csproj 的文件,这个文件是一个 xml 的文件,来管理我们整个项目的一些配置,例如:.NET 使用的版本、程序集的名字以及项目依赖包。
在 .NET 6 之后,开启了一种全新的启动项目模式,看上去比之前的清爽了很多。但是它依然绑定一大堆文件,例如 .csproj:
usingSystem;Console.WriteLine("Hello, World!");
这个改动不再需要手动声明 Main 方法,甚至类名和命名空间也可以省略,语法更直观、代码更简洁。但它仍然依赖 .csproj 项目文件。你需要使用 dotnet new console 创建项目,并用 dotnet run 运行。
在 .NET 10 中,微软进一步突破:你现在可以直接运行一个 .cs 文件,而不需要任何 .csproj 或解决方案文件。例如:
Console.WriteLine("Hello, World!");你只需在命令行中执行:
dotnet run MyApp.cs这样就能运行你的应用程序。这种极简模式非常适合:
编写小型工具
脚本型应用
快速验证思路
如果你希望在独立 .cs 文件中引用第三方包,.NET 提供了 #:package 指令进行包管理。例如:
#:package Humanizer@2.*usingHumanizer;
varstarted = DateTimeOffset.Parse("2025-05-19");
varsince = DateTimeOffset.Now - started;
Console.WriteLine($"Started{since.Humanize}ago");
这段代码引用了 Humanizer 库,将时间差格式化为人类可读的语句。
你也可以用相似方式构建 ASP.NET Core Web API 应用,首先指定 SDK 和依赖包:
#:sdk Microsoft.NET.Sdk.Web#:package Microsoft.AspNetCore.OpenApi@10.0.0-preview.4.*
varbuilder = WebApplication.CreateBuilder(args);
builder.Services.AddOpenApi;
varapp = builder.Build;
app.MapGet("/", => "Hello World!");
app.Run;
这段代码展示了一个无需 .csproj 文件的极简 Web API 服务。
.NET 的发展方向正在朝着更灵活、更轻量、更脚本化的方向演进。从传统的项目结构,到无需显式 Main 方法,再到直接运行 .cs 文件并支持包引用和 Web 服务,.NET 正在成为真正现代化的开发平台。欢迎在评论区分享你看法,一起交流进步!github地址:https://github.com/bingbing-gui
来源:opendotnet