可以使用以下代码示例来解决此问题:
public class CustomRazorViewCompilerProvider : IViewCompilerProvider
{
private readonly ApplicationPartManager _partManager;
private readonly Action
public CustomRazorViewCompilerProvider(ApplicationPartManager partManager, Action setupAction)
{
_partManager = partManager;
_setupAction = setupAction;
}
public CompilerCacheResult GetCompilerCacheResult(ActionContext context)
{
var feature = new ViewsFeature();
_partManager.PopulateFeature(feature);
var razorFiles = feature.ViewDescriptors.Where(vd => vd.ViewAttribute?.GetType() == typeof(RazorViewAttribute)).ToList();
var compiler = new Microsoft.AspNetCore.Mvc.Razor.Compilation.RazorViewCompiler(
new CSharpCompilationProvider(),
new RazorCompilationService(
new DefaultRoslynCompilationService(),
RazorTemplateEngineFactory.Create(setupAction => _setupAction(setupAction))),
_partManager);
return new CompilerCacheResult(
compiler,
razorFiles.Select(rf => new RazorFileInfo
{
FullTypeName = rf.FullName,
RelativePath = rf.RelativePath,
Hash = rf.Hash,
}).ToList());
}
}
public class CustomMvcRazorMvcOptionsSetup : IConfigureOptions
options.ViewEngineOptions.ViewCompilerProvider = provider;
}
}
在Startup.cs中添加以下代码:
services.Configure