static AreaRegistrationBase() { XTrace.WriteLine("{0} Start 初始化魔方 {0}", new String('=', 32)); Assembly.GetExecutingAssembly().WriteVersion(); // 遍历所有引用了AreaRegistrationBase的程序集 var list = new List <PrecompiledViewAssembly>(); foreach (var asm in FindAllArea()) { XTrace.WriteLine("注册区域视图程序集:{0}", asm.FullName); var pva = new PrecompiledViewAssembly(asm); list.Add(pva); } PrecompiledEngines = list.ToArray(); var engine = new CompositePrecompiledMvcEngine(PrecompiledEngines); XTrace.WriteLine("注册复合预编译引擎,共有视图程序集{0}个", list.Count); //ViewEngines.Engines.Insert(0, engine); // 预编译引擎滞后,让其它引擎先工作 ViewEngines.Engines.Add(engine); // StartPage lookups are done by WebPages. VirtualPathFactoryManager.RegisterVirtualPathFactory(engine); // 注册绑定提供者 EntityModelBinderProvider.Register(); // 注册过滤器 XTrace.WriteLine("注册过滤器:{0}", typeof(MvcHandleErrorAttribute).FullName); XTrace.WriteLine("注册过滤器:{0}", typeof(EntityAuthorizeAttribute).FullName); var filters = GlobalFilters.Filters; filters.Add(new MvcHandleErrorAttribute()); filters.Add(new EntityAuthorizeAttribute() { IsGlobal = true }); // 从数据库或者资源文件加载模版页面的例子 //HostingEnvironment.RegisterVirtualPathProvider(new ViewPathProvider()); //var routes = RouteTable.Routes; //routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); //routes.MapMvcAttributeRoutes(); //routes.MapRoute( // name: "Virtual", // url: "{*viewName}", // defaults: new { controller = "Frontend", action = "Default" }, // constraints: new { controller = "Frontend", action = "Default" } //); // 自动检查并下载魔方资源 Task.Factory.StartNew(CheckContent, TaskCreationOptions.LongRunning).LogException(); XTrace.WriteLine("{0} End 初始化魔方 {0}", new String('=', 32)); }
public void Execute() { var engine = new CompositePrecompiledMvcEngine(PrecompiledViewAssembly.OfType <AddViewEngine>()); ViewEngines.Engines.Add(engine); VirtualPathFactoryManager.RegisterVirtualPathFactory(engine); }
/// <summary> /// Loads available assemblies. /// </summary> internal static void LoadAssemblies() { using (var container = ContextScopeProvider.CreateChildContainer()) { if (container == null) { throw new CmsException("Better CMS dependencies container is not initialized."); } if (HostingEnvironment.IsHosted) { HostingEnvironment.RegisterVirtualPathProvider(new EmbeddedResourcesVirtualPathProvider(container.Resolve <IEmbeddedResourcesProvider>())); } else { throw new CmsException("Failed to register EmbeddedResourcesVirtualPathProvider as a virtual path provider."); } ControllerBuilder.Current.SetControllerFactory(container.Resolve <DefaultCmsControllerFactory>()); IAssemblyManager assemblyManager = container.Resolve <IAssemblyManager>(); // First add referenced modules... assemblyManager.AddReferencedModules(); // ...then scan and register uploaded modules. assemblyManager.AddUploadedModules(); var moduleRegistration = container.Resolve <IModulesRegistration>(); moduleRegistration.InitializeModules(); // Register precompiled views for all the assemblies var precompiledAssemblies = new List <PrecompiledViewAssembly>(); moduleRegistration.GetModules().Select(m => m.ModuleDescriptor).Distinct().ForEach( descriptor => { var precompiledAssembly = new PrecompiledViewAssembly(descriptor.GetType().Assembly, string.Format("~/Areas/{0}/", descriptor.AreaName)) { UsePhysicalViewsIfNewer = false }; precompiledAssemblies.Add(precompiledAssembly); }); var engine = new CompositePrecompiledMvcEngine(precompiledAssemblies.ToArray()); ViewEngines.Engines.Insert(0, engine); VirtualPathFactoryManager.RegisterVirtualPathFactory(engine); } }
/// <summary> /// Loads available assemblies. /// </summary> public static void LoadAssemblies() { ApplicationContext.LoadAssemblies(); using (var container = ContextScopeProvider.CreateChildContainer()) { if (HostingEnvironment.IsHosted) { HostingEnvironment.RegisterVirtualPathProvider(new EmbeddedResourcesVirtualPathProvider(container.Resolve <IEmbeddedResourcesProvider>())); } else { if (!IsTestMode) { throw new CoreException("Failed to register EmbeddedResourcesVirtualPathProvider as a virtual path provider."); } } ControllerBuilder.Current.SetControllerFactory(container.Resolve <DefaultWebControllerFactory>()); // Register precompiled views for all the assemblies var precompiledAssemblies = new List <PrecompiledViewAssembly>(); var moduleRegistration = container.Resolve <IModulesRegistration>(); moduleRegistration.GetModules().Select(m => m.ModuleDescriptor).Distinct().ToList().ForEach( descriptor => { var webDescriptor = descriptor as WebModuleDescriptor; if (webDescriptor != null) { var precompiledAssembly = new PrecompiledViewAssembly(descriptor.GetType().Assembly, string.Format("~/Areas/{0}/", webDescriptor.AreaName)) { UsePhysicalViewsIfNewer = false }; precompiledAssemblies.Add(precompiledAssembly); } }); var engine = new CompositePrecompiledMvcEngine(precompiledAssemblies.ToArray()); ViewEngines.Engines.Add(engine); VirtualPathFactoryManager.RegisterVirtualPathFactory(engine); } }
/// <summary> /// Loads available assemblies. /// </summary> public static void LoadAssemblies() { ApplicationContext.LoadAssemblies(); using (var container = ContextScopeProvider.CreateChildContainer()) { if (HostingEnvironment.IsHosted) { HostingEnvironment.RegisterVirtualPathProvider(new EmbeddedResourcesVirtualPathProvider(container.Resolve<IEmbeddedResourcesProvider>())); } else { if (!IsTestMode) { throw new CoreException("Failed to register EmbeddedResourcesVirtualPathProvider as a virtual path provider."); } } ControllerBuilder.Current.SetControllerFactory(container.Resolve<DefaultWebControllerFactory>()); // Register precompiled views for all the assemblies var precompiledAssemblies = new List<PrecompiledViewAssembly>(); var moduleRegistration = container.Resolve<IModulesRegistration>(); moduleRegistration.GetModules().Select(m => m.ModuleDescriptor).Distinct().ToList().ForEach( descriptor => { var webDescriptor = descriptor as WebModuleDescriptor; if (webDescriptor != null) { var precompiledAssembly = new PrecompiledViewAssembly(descriptor.GetType().Assembly, string.Format("~/Areas/{0}/", webDescriptor.AreaName)) { UsePhysicalViewsIfNewer = false }; precompiledAssemblies.Add(precompiledAssembly); } }); var engine = new CompositePrecompiledMvcEngine(precompiledAssemblies.ToArray()); ViewEngines.Engines.Insert(0, engine); VirtualPathFactoryManager.RegisterVirtualPathFactory(engine); } }
/// <summary> /// Loads available assemblies. /// </summary> internal static void LoadAssemblies() { using (var container = ContextScopeProvider.CreateChildContainer()) { if (container == null) { throw new CmsException("Better CMS dependencies container is not initialized."); } if (HostingEnvironment.IsHosted) { HostingEnvironment.RegisterVirtualPathProvider(new EmbeddedResourcesVirtualPathProvider(container.Resolve<IEmbeddedResourcesProvider>())); } else { throw new CmsException("Failed to register EmbeddedResourcesVirtualPathProvider as a virtual path provider."); } ControllerBuilder.Current.SetControllerFactory(container.Resolve<DefaultCmsControllerFactory>()); IAssemblyManager assemblyManager = container.Resolve<IAssemblyManager>(); // First add referenced modules... assemblyManager.AddReferencedModules(); // ...then scan and register uploaded modules. assemblyManager.AddUploadedModules(); var moduleRegistration = container.Resolve<IModulesRegistration>(); moduleRegistration.InitializeModules(); // Register precompiled views for all the assemblies var precompiledAssemblies = new List<PrecompiledViewAssembly>(); moduleRegistration.GetModules().Select(m => m.ModuleDescriptor).Distinct().ForEach( descriptor => { var precompiledAssembly = new PrecompiledViewAssembly(descriptor.GetType().Assembly, string.Format("~/Areas/{0}/", descriptor.AreaName)) { UsePhysicalViewsIfNewer = false }; precompiledAssemblies.Add(precompiledAssembly); }); var engine = new CompositePrecompiledMvcEngine(precompiledAssemblies.ToArray()); ViewEngines.Engines.Add(engine); VirtualPathFactoryManager.RegisterVirtualPathFactory(engine); } }
public MultiTenantPrecompiledViewEngine(IEnumerable <Assembly> viewAssemblies, Func <RouteValueDictionary, IEnumerable <Assembly>, Assembly> assemblySelector, IViewPageActivator viewPageActivator) { _assemblySelector = assemblySelector; base.AreaViewLocationFormats = new[] { "~/Areas/{2}/Views/{1}/{0}.cshtml", "~/Areas/{2}/Views/Shared/{0}.cshtml", }; base.AreaMasterLocationFormats = new[] { "~/Areas/{2}/Views/{1}/{0}.cshtml", "~/Areas/{2}/Views/Shared/{0}.cshtml", }; base.AreaPartialViewLocationFormats = new[] { "~/Areas/{2}/Views/{1}/{0}.cshtml", "~/Areas/{2}/Views/Shared/{0}.cshtml", }; base.ViewLocationFormats = new[] { "~/Views/{1}/{0}.cshtml", "~/Views/Shared/{0}.cshtml", }; base.MasterLocationFormats = new[] { "~/Views/{1}/{0}.cshtml", "~/Views/Shared/{0}.cshtml", }; base.PartialViewLocationFormats = new[] { "~/Views/{1}/{0}.cshtml", "~/Views/Shared/{0}.cshtml", }; base.FileExtensions = new[] { "cshtml", }; foreach (var viewAssembly in viewAssemblies) { var precompiledViewAssembly = new PrecompiledViewAssembly(viewAssembly); var virtualPathViewMappings = new Dictionary <string, ViewMapping>(); foreach (var mapping in precompiledViewAssembly.GetTypeMappings()) { virtualPathViewMappings[mapping.Key] = new ViewMapping { Type = mapping.Value, ViewAssembly = precompiledViewAssembly }; } _mappings[viewAssembly] = virtualPathViewMappings; } _viewPageActivator = viewPageActivator ?? DependencyResolver.Current.GetService <IViewPageActivator>() /* For compatibility, remove this line within next version */ ?? DefaultViewPageActivator.Current; }