public RazorPreCompiler( BeforeCompileContext compileContext, IFileProvider fileProvider, IMemoryCache precompilationCache) { if (compileContext == null) { throw new ArgumentNullException(nameof(compileContext)); } if (fileProvider == null) { throw new ArgumentNullException(nameof(fileProvider)); } if (precompilationCache == null) { throw new ArgumentNullException(nameof(precompilationCache)); } CompileContext = compileContext; FileProvider = fileProvider; // There should always be a syntax tree even if there are no files (we generate one) Debug.Assert(compileContext.Compilation.SyntaxTrees.Length > 0); var defines = compileContext.Compilation.SyntaxTrees[0].Options.PreprocessorSymbolNames; CompilationSettings = new CompilationSettings { CompilationOptions = compileContext.Compilation.Options, Defines = defines, LanguageVersion = compileContext.Compilation.LanguageVersion }; PreCompilationCache = precompilationCache; TagHelperTypeResolver = new PrecompilationTagHelperTypeResolver(CompileContext.Compilation); }
public RazorPreCompiler( [NotNull] BeforeCompileContext compileContext, [NotNull] IAssemblyLoadContextAccessor loadContextAccessor, [NotNull] IFileProvider fileProvider, [NotNull] IMemoryCache precompilationCache, [NotNull] CompilationSettings compilationSettings) { CompileContext = compileContext; LoadContext = loadContextAccessor.GetLoadContext(GetType().GetTypeInfo().Assembly); FileProvider = fileProvider; CompilationSettings = compilationSettings; PreCompilationCache = precompilationCache; TagHelperTypeResolver = new PrecompilationTagHelperTypeResolver(CompileContext, LoadContext); }