.NET5 AddMvc和AddControllersWithViews区别
AddMvc源码
/// <summary>
/// Adds MVC services to the specified <see cref="IServiceCollection">.
/// </see></summary>
/// <param name="services">The <see cref="IServiceCollection"> to add services to.
/// <returns>An <see cref="IMvcBuilder"> that can be used to further configure the MVC services.</see></returns>
public static IMvcBuilder AddMvc(this IServiceCollection services)
{
if (services == null)
{
throw new ArgumentNullException(nameof(services));
}
services.AddControllersWithViews();
return services.AddRazorPages();
}
/// <summary>
/// Adds MVC services to the specified <see cref="IServiceCollection">.
/// </see></summary>
/// <param name="services">The <see cref="IServiceCollection"> to add services to.
/// <param name="setupAction">An <see cref="Action{MvcOptions}"> to configure the provided <see cref="MvcOptions">.
/// <returns>An <see cref="IMvcBuilder"> that can be used to further configure the MVC services.</see></returns>
public static IMvcBuilder AddMvc(this IServiceCollection services, Action<mvcoptions> setupAction)
{
if (services == null)
{
throw new ArgumentNullException(nameof(services));
}
if (setupAction == null)
{
throw new ArgumentNullException(nameof(setupAction));
}
var builder = services.AddMvc();
builder.Services.Configure(setupAction);
return builder;
}
AddControllersWithViews源码
public static IMvcBuilder AddControllersWithViews(this IServiceCollection services)
{
if (services == null)
{
throw new ArgumentNullException(nameof(services));
}
var builder = AddControllersWithViewsCore(services);
return new MvcBuilder(builder.Services, builder.PartManager);
}
public static IMvcBuilder AddControllersWithViews(this IServiceCollection services, Action<mvcoptions>? configure)
{
if (services == null)
{
throw new ArgumentNullException(nameof(services));
}
// This method excludes all of the view-related services by default.
var builder = AddControllersWithViewsCore(services);
if (configure != null)
{
builder.AddMvcOptions(configure);
}
return new MvcBuilder(builder.Services, builder.PartManager);
}
通过对比发现AddMvc
方法比AddControllersWithViews
多了一个AddRazorPages()