ile-Based Apps 支持启动配置使用 [应用名].run.json 文件// app.run.json{“profiles”: {“http”: {“commandName”: “Project”,“launchBrowser”: true,“applicationUrl”: “http://localhost:5000”,“environmentVariables”: {“ASPNETCORE_ENVIRONMENT”: “Development”}},“https”: {“commandName”: “Project”,“launchBrowser”: true,“applicationUrl”: “https://localhost:5001;http://localhost:5000”,“environmentVariables”: {“ASPNETCORE_ENVIRONMENT”: “Development”}}}}运行指定 Profiledotnet run app.cs --launch-profile https九、目录组织最佳实践File-Based Apps 会继承父目录的 Directory.Build.props、Directory.Packages.props 等隐式构建文件。为了避免冲突❌ 不推荐 MyProject/├── MyProject.csproj├── Program.cs└── scripts/└── utility.cs // 会受到 MyProject.csproj 的隐式文件影响✅ 推荐 MyProject/├── MyProject.csproj└── Program.cs scripts/└── utility.cs // 独立目录避免干扰十、实战场景File-Based Apps 能做什么场景 1快速原型验证#:package Newtonsoft.Jsonusing Newtonsoft.Json;var data new { Name “File-Based App”, Version “1.0”, Features new[] { “Fast”, “Simple”, “Powerful” } };Console.WriteLine(JsonConvert.SerializeObject(data, Formatting.Indented));场景 2CLI 工具脚本#!/usr/bin/env dotnet#:package Spectre.Console#:package System.CommandLineusing Spectre.Console;using System.CommandLine;// 构建一个功能完整的 CLI 工具var rootCommand new RootCommand(“文件批量重命名工具”);var patternOption new Option(“–pattern”, “匹配模式”);rootCommand.AddOption(patternOption);rootCommand.SetHandler((string pattern) {AnsiConsole.MarkupLine($“[blue]正在处理匹配模式: {pattern}[/]”);// 业务逻辑…}, patternOption);await rootCommand.InvokeAsync(args);场景 3数据迁移/ETL 脚本#:package Dapper#:package Microsoft.Data.SqlClient#:package CsvHelperusing Dapper;using Microsoft.Data.SqlClient;using CsvHelper;using System.Globalization;// 从数据库读取写入 CSV — 一个文件搞定数据迁移场景 4定时任务/自动化脚本#:package Quartz// 使用 Quartz 构建定时任务部署为单文件后台服务十一、File-Based Apps vs 传统 .csproj 项目对比维度 File-Based Apps 传统 .csproj 项目项目文件 ❌ 不需要 ✅ 需要适合场景 脚本、工具、原型、小型应用 中大型应用、团队协作启动速度 ⚡ 更快AOT 默认 标准 JIT依赖管理 #: 指令内嵌 PackageReference测试支持 ❌ 不支持 dotnet test ✅ 完整支持团队规模 个人/小团队 任意规模升级路径 dotnet project convert 本身就是完整项目关键洞察File-Based Apps 不是替代传统项目而是填补空白——在那些为了写个脚本还得建个项目的场景下它提供了恰到好处的轻量方案。十二、从 File-Based App 到完整项目当你的脚本逐渐复杂需要单元测试、CI/CD 或多项目结构时File-Based Apps 提供了平滑的升级路径dotnet project convert app.cs执行后SDK 会复制 .cs 文件到以应用名命名的目录根据 #: 指令生成等效的 .csproj 文件保留原始文件不变十三、写在最后.NET 10 的 File-Based Apps 是一个看似小巧、实则意义深远的特性。它标志着 .NET 平台在开发体验上的一次重要进化对初学者降低了 C# 的入门门槛一个文件就能开始编程对脚本开发者C# 终于可以像 Python 一样写脚本同时享受编译型语言的性能对运维/DevOps单文件可执行部署极简Native AOT 带来极致启动速度对原型开发快速验证想法需要时再平滑升级为完整项目