You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET Core项目:选Startup.cs还是Program.cs?ASP.NET Core 6相关技术疑问

.NET Core Startup.cs vs Program.cs 常见问题解答

1. 在.NET Core项目中,创建Startup.cs文件而非在Program.cs中注册服务是否更合适?

没有绝对的“更合适”,完全看项目规模和团队习惯:

  • 要是大型企业级项目,用Startup.cs能把服务注册(ConfigureServices)和中间件配置(Configure)拆分,代码结构更清晰,多人协作维护时不会让Program.cs变得臃肿不堪。
  • 要是小型项目、Minimal API或者快速原型,直接在Program.cs里搞定服务注册和中间件配置更简洁,少一个文件的维护成本,代码流程也更紧凑。
    两种方式功能完全等价,官方都支持,按实际场景选就行。

2. 为何较新版本的.NET Core移除了Startup.cs文件,是否存在特定原因?

.NET 6及以后默认模板拿掉Startup.cs,核心是为了简化开发体验、降低入门门槛:

  • 引入了顶级语句(Top-level statements),能删掉Program类、Main方法这类样板代码,启动代码变得极简,新手不用纠结复杂的类和方法结构就能快速上手。
  • 原来Startup.cs里的ConfigureServices和Configure逻辑,完全可以通过WebApplicationBuilder在Program.cs里实现,功能一点没少,只是语法更直白。
  • 官方没强制禁用Startup.cs,你完全可以像示例代码那样手动创建Startup.cs,再用UseStartup<Startup>()指定,兼容旧的开发习惯。

3. 将服务与中间件注册集成到Program.cs文件中,是否是最新版.NET Core中配置应用的推荐且更直观的方式?

是的,这是官方推荐的默认方式,尤其适合Minimal API和中小型项目:

  • 顶级语句带来的线性代码结构,从创建WebApplicationBuilder,到注册服务、配置中间件、启动应用,整个流程一气呵成,读代码和调试都更直观。
  • 少了不必要的文件和类层级,降低了项目复杂度。
  • 当然,如果项目规模超大,觉得Program.cs内容太多,还是可以拆分到Startup.cs或者单独的配置类里,官方支持两种方式并存,不会限制你的选择。

代码示例(兼容Startup.cs的写法)

public class Program
{
    public static async Task Main(string[] args)
    {
        var host = CreateHostBuilder(args).UseDefaultServiceProvider(x => x.ValidateScopes = false).Build();
        await host.RunAsync();
    }

    public static IHostBuilder CreateHostBuilder(string[] args) =>
        Host.CreateDefaultBuilder(args)
                    .ConfigureWebHostDefaults(webBuilder =>
                    {
                        webBuilder.UseStartup<Startup>();
                    });
}

内容的提问来源于stack exchange,提问作者Muteeb ali

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 21:55:14