ASP.NET 发布到 Azure 时的核心 MVC 2.1 视图编译

ASP.NET Core MVC 2.1 View Compilation on Publish to Azure

我创建了一个 class,它继承自 RazorProjectFileSystem,它在 cshtml 文件被编译之前对其进行压缩。这是在 Startup.ConfigureServices 中配置的。

在本地 运行ning 时工作得很好,去掉了大量的空白和注释。但是,当网站发布到 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

您唯一需要做的就是在从文件夹中拉出 vies 时附加 .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);
        }

希望对您有所帮助。