我创建了一个从RazorProjectFileSystem继承的类,该类在编译cshtml文件之前对其进行缩小。在Startup.ConfigureServices
中配置。
在本地运行时效果很好,去除了大量空白和注释。但是,当网站发布到Azure时,会创建一个ProjectName.Views.dll
,这完全绕开了我的逻辑。
我仍然想使用预编译的视图(是的,我们也使用gzip压缩),但是需要将我的逻辑插入链中的其他位置才能实现。但是,在创建View.dll的过程中,我找不到从文件系统中读取.cshtml文件的位置的任何信息。
我怀疑我们可能需要在实际的构建过程本身之前运行压缩程序。非常感谢任何想法或建议。
[有许多库可用于构建CSHTML文件的时间最小化,您可以使用**gulp-cshtml-minify**
。唯一的问题是您必须安装节点和gulp才能使用它。
这是详细说明。您可以在下面的博客中找到它:
https://debugandrelease.blogspot.com/2018/11/automatically-minifying-cshtml-files-in.html
只需要做的就是在从文件夹中拉出vie时附加.min单词,如下所示:
public override ViewResult View(string viewName, object model)
{
if (!IsDevelopment())
{
string action = ControllerContext.RouteData.Values["action"].ToString();
if (string.IsNullOrEmpty(viewName))
{
viewName = $"{action}.min";
}
else if (viewName == action)
{
viewName += ".min";
}
}
return base.View(viewName, model);
}
希望有帮助。