【ASP.NET Core】AddMvc和AddMvcCore的区别
AddMvcCore() method only adds the core MVC services.
AddMvc() method adds all the required MVC services.
AddMvc() method calls AddMvcCore() method internally.
AddMvcCore()更加简洁,只添加了MVC核心服务。
而AddMvc()添加了MVC所需要的所有组件。
AddMvc()内部调用了AddMvcCore(),这也就使得AddMvcCore()更加重要。
ASP.Net是开源项目,>github地址
贴出AddMvc源码会更加清楚。
public static IMvcBuilder AddMvc(this IServiceCollection services) { if (services == null) { throw new ArgumentNullException(nameof(services)); } var builder = services.AddMvcCore(); // 从这里开始,都是以AddMvcCore()为基础进行添加的各种服务。 builder.AddApiExplorer(); builder.AddAuthorization(); AddDefaultFrameworkParts(builder.PartManager); // Order added affects options setup order // Default framework order builder.AddFormatterMappings(); builder.AddViews(); builder.AddRazorViewEngine(); builder.AddRazorPages(); builder.AddCacheTagHelper(); // +1 order builder.AddDataAnnotations(); // +1 order // +10 order builder.AddJsonFormatters(); builder.AddCors(); return new MvcBuilder(builder.Services, builder.PartManager); }
AddMvcCore源码:
1 public static IMvcCoreBuilder AddMvcCore(this IServiceCollection services) 2 { 3 if (services == null) 4 { 5 throw new ArgumentNullException(nameof(services)); 6 } 7 8 var partManager = GetApplicationPartManager(services); 9 services.TryAddSingleton(partManager); 10 11 ConfigureDefaultFeatureProviders(partManager); 12 ConfigureDefaultServices(services); 13 AddMvcCoreServices(services); 14 15 var builder = new MvcCoreBuilder(services, partManager); 16 17 return builder; 18 }
这里有个小彩蛋~✨✨