/// <summary> /// Adds the minimum essential MVC services to the specified <see cref="IServiceCollection" />. Additional services /// including MVC's support for authorization, formatters, and validation must be added separately using the /// <see cref="IMvcCoreBuilder"/> returned from this method. /// </summary> /// <param name="services">The <see cref="IServiceCollection" /> to add services to.</param> /// <returns>An <see cref="IMvcCoreBuilder"/> that can be used to further configure the MVC services.</returns> /// <remarks> /// The <see cref="MvcCoreServiceCollectionExtensions.AddMvcCore(IServiceCollection)"/> approach for configuring /// MVC is provided for experienced MVC developers who wish to have full control over the set of default services /// registered. <see cref="MvcCoreServiceCollectionExtensions.AddMvcCore(IServiceCollection)"/> will register /// the minimum set of services necessary to route requests and invoke controllers. It is not expected that any /// application will satisfy its requirements with just a call to /// <see cref="MvcCoreServiceCollectionExtensions.AddMvcCore(IServiceCollection)"/>. Additional configuration using the /// <see cref="IMvcCoreBuilder"/> will be required. /// </remarks> public static IMvcCoreBuilder AddMvcCore(this IServiceCollection services) { if (services == null) { throw new ArgumentNullException(nameof(services)); } var environment = GetServiceFromCollection <IWebHostEnvironment>(services); var partManager = GetApplicationPartManager(services, environment); services.TryAddSingleton(partManager); ConfigureDefaultFeatureProviders(partManager); ConfigureDefaultServices(services); AddMvcCoreServices(services); if (environment?.IsDevelopment() ?? false) { services.TryAddEnumerable( ServiceDescriptor.Singleton <IActionDescriptorChangeProvider, HotReloadService>()); } var builder = new MvcCoreBuilder(services, partManager); return(builder); }
/// <summary> /// Adds the minimum essential MVC services to the specified <see cref="IServiceCollection" />. Additional services /// including MVC's support for authorization, formatters, and validation must be added separately using the /// <see cref="IMvcCoreBuilder"/> returned from this method. /// </summary> /// <param name="services">The <see cref="IServiceCollection" /> to add services to.</param> /// <returns>An <see cref="IMvcCoreBuilder"/> that can be used to further configure the MVC services.</returns> /// <remarks> /// The <see cref="MvcCoreServiceCollectionExtensions.AddMvcCore(IServiceCollection)"/> approach for configuring /// MVC is provided for experienced MVC developers who wish to have full control over the set of default services /// registered. <see cref="MvcCoreServiceCollectionExtensions.AddMvcCore(IServiceCollection)"/> will register /// the minimum set of services necessary to route requests and invoke controllers. It is not expected that any /// application will satisfy its requirements with just a call to /// <see cref="MvcCoreServiceCollectionExtensions.AddMvcCore(IServiceCollection)"/>. Additional configuration using the /// <see cref="IMvcCoreBuilder"/> will be required. /// </remarks> public static IMvcCoreBuilder AddMvcCore(this IServiceCollection services) { if (services == null) { throw new ArgumentNullException(nameof(services)); } var partManager = GetApplicationPartManager(services); services.TryAddSingleton(partManager); ConfigureDefaultFeatureProviders(partManager); ConfigureDefaultServices(services); AddMvcCoreServices(services); var builder = new MvcCoreBuilder(services, partManager); return builder; }