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

VS2022 .NET6 Program.cs中Main方法位置及相关代码添加方法

.NET 6 Program.cs 相关问题说明

public static void Main(string[] args) 所在位置

你在默认生成的Program.cs里找不到显式编写的Main方法是正常的,.NET 6 及以上版本的项目模板默认启用顶级语句特性:

  • 编译器会在项目编译阶段自动生成Program类和作为程序入口的Main方法,不需要开发者手动编写这段结构
  • 你直接写在Program.cs最外层的所有顶层代码,都会被编译器自动放入生成的Main方法中按顺序执行

目标代码添加方法

不需要硬套旧版本的代码结构,新模板和旧写法的逻辑是完全对应的,按以下规则调整即可:

  • 旧写法里的var host = CreateHostBuilder(args).Build();在新模板里已经有等价实现:模板中先通过var builder = WebApplication.CreateBuilder(args);完成主机配置、服务注册后,var app = builder.Build();这行代码就完全对应旧写法里Build出host实例的逻辑,不需要重复编写。
  • 你要添加的作用域创建代码using (var scope=host.Services.CreateScope()),直接放在var app = builder.Build();之后、app.Run();之前即可,注意把代码里的host替换为新模板里的app实例。

调整后的代码参考片段

var builder = WebApplication.CreateBuilder(args);

// 原有模板自动生成的服务注册代码,比如AddControllers、AddDbContext等
// builder.Services.AddControllersWithViews();

var app = builder.Build();

// 你需要添加的作用域逻辑放在这个位置
using (var scope = app.Services.CreateScope())
{
    var serviceProvider = scope.ServiceProvider;
    // 在这里写作用域内的执行逻辑,比如初始化种子数据、获取指定服务实例等
}

// 原有模板自动生成的中间件配置代码
// if (!app.Environment.IsDevelopment())
// {
//     app.UseExceptionHandler("/Home/Error");
// }
// app.UseStaticFiles();
// app.UseRouting();
// app.UseAuthorization();
// app.MapDefaultControllerRoute();

app.Run();

如果你更习惯旧版本显式声明Program类和Main方法的写法,也可以直接把Program.cs里的所有代码包裹到public class Program { public static void Main(string[] args) { /* 你的代码 */ } }结构中,程序可以正常运行,没有兼容性问题。

内容的提问来源于stack exchange,提问作者Sola Akinwale

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 15:54:32