コード例 #1
0
        public void Throws_WhenCantResolve_DependencyLibraries()
        {
            var manager = new DefaultMetadataReferenceManager();

            IReadOnlyList <CompilationLibrary> a = new List <CompilationLibrary>();

            Shim classPropShim = Shim.Replace(() => Is.A <DependencyContext>().CompileLibraries).With((DependencyContext @this) => a);

            Exception ex = null;

            try
            {
                PoseContext.Isolate(() =>
                {
                    manager.Resolve(DependencyContext.Default);
                }, classPropShim);
            }
            catch (Exception e)
            {
                ex = e.InnerException;
            }

            Assert.NotNull(ex);
            Assert.NotNull(ex.Message);
            Assert.Equal(ex.Message, "Can't load metadata reference from the entry assembly. " +
                         "Make sure PreserveCompilationContext is set to true in *.csproj file");
        }
コード例 #2
0
        public virtual RazorLightEngine Build()
        {
            var options = new RazorLightOptions();

            if (namespaces != null)
            {
                options.Namespaces = namespaces;
            }

            if (dynamicTemplates != null)
            {
                options.DynamicTemplates = dynamicTemplates;
            }

            if (metadataReferences != null)
            {
                options.AdditionalMetadataReferences = metadataReferences;
            }

            if (prerenderCallbacks != null)
            {
                options.PreRenderCallbacks = prerenderCallbacks;
            }

            var sourceGenerator          = new RazorSourceGenerator(DefaultRazorEngine.Instance, project, options.Namespaces);
            var metadataReferenceManager = new DefaultMetadataReferenceManager(options.AdditionalMetadataReferences);

            var assembly = operatingAssembly ?? Assembly.GetEntryAssembly();

            var compiler = new RoslynCompilationService(metadataReferenceManager, assembly);
            var templateFactoryProvider = new TemplateFactoryProvider(sourceGenerator, compiler, options);

            return(new RazorLightEngine(options, templateFactoryProvider, cachingProvider));
        }
コード例 #3
0
        public void Ensure_AdditionalMetadata_IsApplied()
        {
            var metadata = new HashSet <MetadataReference>();
            var manager  = new DefaultMetadataReferenceManager(metadata);

            Assert.NotNull(manager.AdditionalMetadataReferences);
            Assert.Equal(metadata, manager.AdditionalMetadataReferences);
        }
コード例 #4
0
        private TemplateFactoryProvider GetProvider()
        {
            var sourceGenerator    = new RazorSourceGenerator(DefaultRazorEngine.Instance, project);
            var metadataReferences = new DefaultMetadataReferenceManager();
            var compiler           = new RoslynCompilationService(metadataReferences, Assembly.GetEntryAssembly());

            var provider = new TemplateFactoryProvider(sourceGenerator, compiler, new RazorLightOptions());

            return(provider);
        }
コード例 #5
0
            public static TestRazorTemplateCompiler Create(RazorLightOptions options = null, RazorLightProject project = null)
            {
                var razorOptions    = options ?? new RazorLightOptions();
                var metatadaManager = new DefaultMetadataReferenceManager();
                var assembly        = Assembly.GetCallingAssembly();
                var razorProject    = project ?? new EmbeddedRazorProject(assembly);
                var compilerService = new RoslynCompilationService(metatadaManager, assembly);
                var generator       = new RazorSourceGenerator(DefaultRazorEngine.Instance, razorProject);

                return(new TestRazorTemplateCompiler(generator, compilerService, razorProject, razorOptions));
            }
コード例 #6
0
ファイル: EngineFactory.cs プロジェクト: yuxi214/RazorLight
        /// <summary>
        ///Creates RazorLightEngine with a custom RazorLightProject
        /// </summary>
        /// <param name="project">The project</param>
        /// <returns>Instance of RazorLightEngine</returns>
        public virtual RazorLightEngine Create(RazorLightProject project, RazorLightOptions options = null)
        {
            var razorOptions = options ?? new RazorLightOptions();

            var sourceGenerator = new RazorSourceGenerator(DefaultRazorEngine.Instance, project, razorOptions.Namespaces);

            var metadataReferenceManager = new DefaultMetadataReferenceManager(razorOptions.AdditionalMetadataReferences);
            var compiler = new RoslynCompilationService(metadataReferenceManager, Assembly.GetEntryAssembly());
            var templateFactoryProvider = new TemplateFactoryProvider(sourceGenerator, compiler, razorOptions);

            ICachingProvider cacheProvider = new MemoryCachingProvider();

            return(new RazorLightEngine(razorOptions, templateFactoryProvider, cacheProvider));
        }
コード例 #7
0
        public void Ensure_Throws_OnNull_Constructor_Dependencies()
        {
            var options         = new RazorLightOptions();
            var metadataManager = new DefaultMetadataReferenceManager();
            var assembly        = Assembly.GetCallingAssembly();
            var project         = new EmbeddedRazorProject(assembly);
            var compilerService = new RoslynCompilationService(metadataManager, assembly);
            var generator       = new RazorSourceGenerator(DefaultRazorEngine.Instance, project);

            Action p1 = new Action(() => { new RazorTemplateCompiler(null, compilerService, project, options); });
            Action p2 = new Action(() => { new RazorTemplateCompiler(generator, null, project, options); });
            Action p3 = new Action(() => { new RazorTemplateCompiler(generator, compilerService, null, options); });
            Action p4 = new Action(() => { new RazorTemplateCompiler(generator, compilerService, project, null); });

            Assert.Throws <ArgumentNullException>(p1);
            Assert.Throws <ArgumentNullException>(p2);
            Assert.Throws <ArgumentNullException>(p3);
            Assert.Throws <ArgumentNullException>(p4);
        }
コード例 #8
0
        public virtual RazorLightEngine Build()
        {
            options = options ?? new RazorLightOptions();
            project = project ?? new NoRazorProject();

            if (namespaces != null)
            {
                if (namespaces.Count > 0 && options.Namespaces.Count > 0)
                {
                    ThrowIfHasBeenSetExplicitly(nameof(namespaces));
                }

                options.Namespaces = namespaces;
            }

            if (dynamicTemplates != null)
            {
                if (dynamicTemplates.Count > 0 && options.DynamicTemplates.Count > 0)
                {
                    ThrowIfHasBeenSetExplicitly(nameof(dynamicTemplates));
                }

                options.DynamicTemplates = dynamicTemplates;
            }

            if (metadataReferences != null)
            {
                if (metadataReferences.Count > 0 && options.AdditionalMetadataReferences.Count > 0)
                {
                    ThrowIfHasBeenSetExplicitly(nameof(metadataReferences));
                }

                options.AdditionalMetadataReferences = metadataReferences;
            }

            if (excludedAssemblies != null)
            {
                if (excludedAssemblies.Count > 0 && options.ExcludedAssemblies.Count > 0)
                {
                    ThrowIfHasBeenSetExplicitly(nameof(excludedAssemblies));
                }

                options.ExcludedAssemblies = excludedAssemblies;
            }

            if (prerenderCallbacks != null)
            {
                if (prerenderCallbacks.Count > 0 && options.PreRenderCallbacks.Count > 0)
                {
                    ThrowIfHasBeenSetExplicitly(nameof(prerenderCallbacks));
                }

                options.PreRenderCallbacks = prerenderCallbacks;
            }

            if (cachingProvider != null)
            {
                if (options.CachingProvider != null)
                {
                    ThrowIfHasBeenSetExplicitly(nameof(cachingProvider));
                }

                options.CachingProvider = cachingProvider;
            }

            if (disableEncoding.HasValue)
            {
                if (options.DisableEncoding != null)
                {
                    ThrowIfHasBeenSetExplicitly(nameof(disableEncoding));
                }

                options.DisableEncoding = options.DisableEncoding ?? disableEncoding ?? false;
            }
            else
            {
                if (!options.DisableEncoding.HasValue)
                {
                    options.DisableEncoding = false;
                }
            }

            if (enableDebugMode.HasValue && options.EnableDebugMode.HasValue)
            {
                ThrowIfHasBeenSetExplicitly(nameof(enableDebugMode));
            }
            else
            {
                options.EnableDebugMode = options.EnableDebugMode ?? enableDebugMode ?? false;
            }

            var metadataReferenceManager = new DefaultMetadataReferenceManager(options.AdditionalMetadataReferences, options.ExcludedAssemblies);
            var assembly = operatingAssembly ?? Assembly.GetEntryAssembly();
            var compiler = new RoslynCompilationService(metadataReferenceManager, assembly);

            var sourceGenerator         = new RazorSourceGenerator(DefaultRazorEngine.Instance, project, options.Namespaces);
            var templateCompiler        = new RazorTemplateCompiler(sourceGenerator, compiler, project, options);
            var templateFactoryProvider = new TemplateFactoryProvider();

            var engineHandler = new EngineHandler(options, templateCompiler, templateFactoryProvider, cachingProvider);

            return(new RazorLightEngine(engineHandler));
        }
コード例 #9
0
 public void Throws_OnEmptyManager_InConstructor()
 {
     Assert.Throws <ArgumentNullException>(() => { _ = new DefaultMetadataReferenceManager(null as HashSet <MetadataReference>, null); });
 }