public void Register(ServiceProviderHolder serviceProviderHolder) { var logger = serviceProviderHolder.ServiceProvider.GetRequiredService <ILogger>(); ViewAssemblyLoader.LoadViewAssemblies(logger); var assemblies = new List <Assembly>(); var builder = serviceProviderHolder.ServiceCollection.AddMvc() .AddApplicationPart(typeof(TestController).Assembly); var loaded = AppDomain.CurrentDomain.GetAssemblies().Where(assembly => !assembly.IsDynamic && !assembly.GetName().Name !.StartsWith("Microsoft") && assembly.GetName().Name !.Contains("Views", StringComparison.OrdinalIgnoreCase)).ToArray(); assemblies.AddRange(loaded); logger.Information("Found view assemblies: {Count}", assemblies.Count); foreach (var assembly in assemblies) { logger.Information("Found view assembly: {Assembly}", assembly.GetName().Name); builder.AddApplicationPart(assembly); } }
public static IServiceCollection AddDeploymentMvc(this IServiceCollection services, EnvironmentConfiguration environmentConfiguration, IKeyValueConfiguration configuration, ILogger logger, IApplicationAssemblyResolver applicationAssemblyResolver) { ViewAssemblyLoader.LoadViewAssemblies(logger); var filteredAssemblies = applicationAssemblyResolver.GetAssemblies(); IMvcBuilder mvcBuilder = services.AddMvc( options => { options.InputFormatters.Insert(0, new XWwwFormUrlEncodedFormatter()); options.Filters.Add <ModelValidatorFilterAttribute>(); }) .AddNewtonsoftJson( options => { options.SerializerSettings.Converters.Add(new DateConverter()); options.SerializerSettings.Formatting = Formatting.Indented; }); foreach (Assembly filteredAssembly in filteredAssemblies) { logger.Debug("Adding assembly {Assembly} to MVC application parts", filteredAssembly.FullName); mvcBuilder.AddApplicationPart(filteredAssembly); } var viewAssemblies = AssemblyLoadContext.Default.Assemblies .Where(assembly => !assembly.IsDynamic && (assembly.GetName().Name?.Contains("View") ?? false)) .ToArray(); foreach (var item in viewAssemblies) { mvcBuilder.AddApplicationPart(item); } if (environmentConfiguration.ToHostEnvironment().IsDevelopment() || configuration.ValueOrDefault(StartupConstants.RuntimeCompilationEnabled)) { mvcBuilder.AddRazorRuntimeCompilation(); } mvcBuilder .AddControllersAsServices(); services.AddAntiforgery(); return(services); }