private static TestRazorViewCompiler GetViewCompiler(
            TestFileProvider fileProvider = null,
            PublicRazorReferenceManager referenceManager    = null,
            IList <CompiledViewDescriptor> precompiledViews = null,
            PublicCSharpCompiler csharpCompiler             = null)
        {
            fileProvider = fileProvider ?? new TestFileProvider();
            var options = Options.Create(new MvcRazorRuntimeCompilationOptions {
                FileProviders = { fileProvider }
            });
            var compilationFileProvider = new PublicRuntimeCompilationFileProvider(options);


            referenceManager = referenceManager ?? CreateReferenceManager();
            precompiledViews = precompiledViews ?? Array.Empty <CompiledViewDescriptor>();

            var hostingEnvironment = Mock.Of <IWebHostEnvironment>(e => e.ContentRootPath == "BasePath");
            var fileSystem         = new PublicFileProviderRazorProjectFileSystem(compilationFileProvider);
            var projectEngine      = RazorProjectEngine.Create(RazorConfiguration.Default, fileSystem, builder => {
                RazorExtensions.Register(builder);
            });

            csharpCompiler = csharpCompiler ?? new PublicCSharpCompiler(referenceManager, hostingEnvironment);

            return(new TestRazorViewCompiler(
                       projectEngine,
                       csharpCompiler,
                       precompiledViews));
        }
        private static PublicFileProviderRazorProjectFileSystem GetRazorProjectFileSystem(
            TestFileProvider fileProvider,
            string contentRootPath = "BasePath")
        {
            var options = Options.Create(new MvcRazorRuntimeCompilationOptions {
                FileProviders = { fileProvider }
            });
            var compilationFileProvider = new PublicRuntimeCompilationFileProvider(options);
            var fileSystem = new PublicFileProviderRazorProjectFileSystem(
                compilationFileProvider);

            return(fileSystem);
        }
        private static RazorProjectEngine GetEngine()
        {
            var options = Options.Create(new MvcRazorRuntimeCompilationOptions {
                FileProviders = { new TestFileProvider() }
            });
            var compilationFileProvider = new PublicRuntimeCompilationFileProvider(options);


            var referenceManager = CreateReferenceManager();
            var precompiledViews = Array.Empty <CompiledViewDescriptor>();

            var hostingEnvironment = Mock.Of <IWebHostEnvironment>(e => e.ContentRootPath == "BasePath");
            var fileSystem         = new PublicFileProviderRazorProjectFileSystem(compilationFileProvider);
            var projectEngine      = RazorProjectEngine.Create(RazorConfiguration.Default, fileSystem, builder => {
                RazorExtensions.Register(builder);
            });

            return(projectEngine);
        }