Asp.net core 2.1.0 RazorTemplateEngine не работает - PullRequest
0 голосов
/ 24 мая 2018

Я выполняю html minify на движке razortemplate во время компиляции на ядре asp.net, но движок razortemplate не работает после обновления проекта asp.net core 2.1.0.

Он не вызывает метод CreateCodeDocument.Пример кода ниже.

public class CustomRazorTemplateEngine : RazorTemplateEngine
{
    private HtmlMinifier _htmlMinifier = new HtmlMinifier();

    public CustomRazorTemplateEngine(RazorEngine engine, RazorProject project) : base(engine, project)
    {
        Options.ImportsFileName = "_ViewImports.cshtml";
    }

    public override RazorCodeDocument CreateCodeDocument(RazorProjectItem projectItem)
    {
        using (var inputStream = projectItem.Read())
        {
            using (var reader = new StreamReader(inputStream))
            {
                var text = reader.ReadToEnd();

                var markupStart = text.IndexOf("<!DOCTYPE");
                var directives = text.Substring(0, markupStart);
                var markup = text.Substring(markupStart);
                text = directives + Minify(markup);
                var byteArray = Encoding.UTF8.GetBytes(text);
                var minifiedInputStream = new MemoryStream(byteArray);

                var source = RazorSourceDocument.ReadFrom(minifiedInputStream, projectItem.PhysicalPath);
                var imports = GetImports(projectItem);

                return RazorCodeDocument.Create(source, imports);
            }
        }
    }

    private string Minify(string markup)
    {
        MarkupMinificationResult result = _htmlMinifier.Minify(markup, string.Empty, Encoding.UTF8, true);

        if (result.Errors.Count == 0)
        {
            MinificationStatistics statistics = result.Statistics;
            if (statistics != null)
            {
                Console.WriteLine();
                Console.WriteLine($"Original size: {statistics.OriginalSize:N0} Bytes | Minified size: {statistics.MinifiedSize:N0} Bytes | Saved: {statistics.SavedInPercent:N2}%");
            }
            //Console.WriteLine($"{Environment.NewLine}Minified content:{Environment.NewLine}{Environment.NewLine}{result.MinifiedContent}");

            return result.MinifiedContent;
        }
        else
        {
            IList<MinificationErrorInfo> errors = result.Errors;

            Console.WriteLine();
            Console.WriteLine($"Found {errors.Count:N0} error(s):");

            foreach (var error in errors)
            {
                Console.WriteLine($" - Line {error.LineNumber}, Column {error.ColumnNumber}: {error.Message}");
            }

            return markup;
        }
    }
}

}

startup.cs services.AddSingleton ();

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...