public static void AddControllersAsServices(IServiceCollection services, IEnumerable<Assembly> assemblies) { var assemblyProvider = new StaticAssemblyProvider(); foreach (var assembly in assemblies) { assemblyProvider.CandidateAssemblies.Add(assembly); } var controllerTypeProvider = new DefaultControllerTypeProvider(assemblyProvider); var controllerTypes = controllerTypeProvider.ControllerTypes; AddControllersAsServices(services, controllerTypes.Select(type => type.AsType())); }
private static IAssemblyProvider GetAssemblyProvider() { var assemblyProvider = new StaticAssemblyProvider(); assemblyProvider.CandidateAssemblies.Add( typeof(FilteredViewComponentSelector).GetTypeInfo().Assembly); return assemblyProvider; }
private ControllerActionDescriptorProvider CreateProvider() { var assemblyProvider = new StaticAssemblyProvider(); assemblyProvider.CandidateAssemblies.Add(GetType().GetTypeInfo().Assembly); var controllerTypeProvider = new NamespaceFilteredControllerTypeProvider(assemblyProvider); var options = new MvcOptions(); var setup = new WebApiCompatShimOptionsSetup(); setup.Configure(options); var optionsAccessor = new Mock<IOptions<MvcOptions>>(); optionsAccessor .SetupGet(o => o.Value) .Returns(options); var authorizationOptionsAccessor = new Mock<IOptions<AuthorizationOptions>>(); authorizationOptionsAccessor .SetupGet(o => o.Value) .Returns(new AuthorizationOptions()); var modelProvider = new DefaultApplicationModelProvider(optionsAccessor.Object); var provider = new ControllerActionDescriptorProvider( controllerTypeProvider, new[] { modelProvider }, optionsAccessor.Object); return provider; }
private static IAssemblyProvider GetAssemblyProvider() { var assemblyProvider = new StaticAssemblyProvider(); assemblyProvider.CandidateAssemblies.Add( typeof(ViewComponentContainer).GetTypeInfo().Assembly); return assemblyProvider; }
private Func<IServiceCollection, IServiceProvider> InitializeServices( Assembly startupAssembly, Func<IServiceCollection, IServiceProvider> buildServices) { var applicationServices = CallContextServiceLocator.Locator.ServiceProvider; var libraryManager = applicationServices.GetRequiredService<ILibraryManager>(); // When an application executes in a regular context, the application base path points to the root // directory where the application is located, for example .../samples/MvcSample.Web. However, when // executing an application as part of a test, the ApplicationBasePath of the IApplicationEnvironment // points to the root folder of the test project. // To compensate, we need to calculate the correct project path and override the application // environment value so that components like the view engine work properly in the context of the test. var applicationName = startupAssembly.GetName().Name; var library = libraryManager.GetLibrary(applicationName); var applicationRoot = Path.GetDirectoryName(library.Path); var applicationEnvironment = applicationServices.GetRequiredService<IApplicationEnvironment>(); return (services) => { services.AddInstance<IApplicationEnvironment>( new TestApplicationEnvironment(applicationEnvironment, applicationName, applicationRoot)); var hostingEnvironment = new HostingEnvironment(); hostingEnvironment.Initialize(applicationRoot, null); services.AddInstance<IHostingEnvironment>(hostingEnvironment); // Inject a custom assembly provider. Overrides AddMvc() because that uses TryAdd(). var assemblyProvider = new StaticAssemblyProvider(); assemblyProvider.CandidateAssemblies.Add(startupAssembly); services.AddInstance<IAssemblyProvider>(assemblyProvider); AddAdditionalServices(services); return buildServices(services); }; }
private static IAssemblyProvider CreateAssemblyProvider(string siteName) { // Creates a service type that will limit MVC to only the controllers in the test site. // We only want this to happen when running in-process. var assembly = Assembly.Load(new AssemblyName(siteName)); var provider = new StaticAssemblyProvider { CandidateAssemblies = { assembly, }, }; return provider; }
public Func<IServiceCollection, IServiceProvider> InitializeServices(Assembly startupAssembly, Func<IServiceCollection, IServiceProvider> buildServices) { var applicationName = startupAssembly.GetName().Name; var applicationRoot = GetApplicationRoot(applicationName); #if DNX451 AppDomain.CurrentDomain.SetData("APP_CONTEXT_BASE_DIRECTORY", applicationRoot); #endif var applicationEnvironment = PlatformServices.Default.Application; var hostingEnvironment = new HostingEnvironment(); hostingEnvironment.Initialize(applicationRoot, null); var assemblyProvider = new StaticAssemblyProvider(); assemblyProvider.CandidateAssemblies.Add(startupAssembly); return services => { services.AddInstance<IApplicationEnvironment>(new TestApplicationEnvironment(applicationEnvironment, applicationName, applicationRoot)); services.AddInstance<IHostingEnvironment>(hostingEnvironment); // Inject a custom assembly provider. Overrides AddMvc() because that uses TryAdd(). services.AddInstance<IAssemblyProvider>(assemblyProvider); return buildServices(services); }; }