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

如何判断所用框架?执行dotnet new mvc生成代码与博客不符问题

Hey there! Let's tackle your two technical questions step by step:

1. 如何判断当前使用的是哪个框架?

有几种简单实用的方法可以快速确认:

  • 查看项目配置文件:打开项目根目录下的.csproj文件,找到<TargetFramework>节点,里面的内容就是项目对应的框架版本,比如<TargetFramework>net6.0</TargetFramework>代表.NET 6,<TargetFramework>netcoreapp2.1</TargetFramework>代表.NET Core 2.1。
  • 使用CLI命令查询:在终端执行dotnet --info,输出结果里会列出当前安装的.NET SDK和运行时版本,结合项目的目标框架就能对应上。
  • 通过代码输出信息:在项目里添加一行代码,运行后直接查看框架详情:
    Console.WriteLine(System.Runtime.InteropServices.RuntimeInformation.FrameworkDescription);
    
    执行后会得到类似.NET 6.0.15或者.NET Core 2.2.8的明确结果。
2. 为什么执行dotnet new mvc -n MyWeb生成的代码和博客内容不一致?

核心原因是你使用的.NET SDK版本和博客作者的版本不同。

你生成的代码是早期.NET Core 2.x版本的模板风格:

namespace MyWeb {
 public class Program {
 public static void Main(string[] args) {
 BuildWebHost(args).Run();
 }
 public static IWebHost BuildWebHost(string[] args) => WebHost.CreateDefaultBuilder(args)
 .UseStartup<Startup>()
 .Build();
 }
}

而在.NET Core 3.0及以后的版本(包括.NET 5/6/7/8),ASP.NET Core的项目模板做了大幅简化——要么去掉了单独的Startup类,要么提供了更简洁的写法,比如常见的顶级语句风格:

var builder = WebApplication.CreateBuilder(args);

// 注册服务
builder.Services.AddControllersWithViews();

var app = builder.Build();

// 配置请求管道
if (!app.Environment.IsDevelopment())
{
    app.UseExceptionHandler("/Home/Error");
    app.UseHsts();
}

app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.UseAuthorization();

app.MapControllerRoute(
    name: "default",
    pattern: "{controller=Home}/{action=Index}/{id?}");

app.Run();

.NET团队会随着SDK版本迭代优化项目模板,调整代码结构和写法,所以不同版本SDK生成的初始代码自然会有差异。你可以用dotnet --version命令查看自己的SDK版本,对比博客里提到的版本,就能完全明白差异的来源了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 07:30:50