Минификация ASP.NET неправильно заменяет символы Юникода - PullRequest
0 голосов
/ 19 сентября 2018

У меня есть следующий класс CSS, который использует псевдоэлемент для вставки разрыва строки:

.test-class:after {
    content: '\00000a';
    white-space: pre;
}

В моем веб-приложении ASP.NET это прекрасно работает при отладке.Однако в режиме выпуска, когда файл CSS минимизирован, содержимое изменяется так, что «\ 00000a» становится «\ n».

Это приводит к тому, что символ «n» визуально отображается на экране, скореечем вставка разрыва строки.

Я знаю, что подобная проблема была задана ранее здесь:

Минимизация CSS-пакета, заменяющая символы Юникода

Тем не менее, я считаю, что проблема в моем случае заключается в самом процессе минимизации, а не в кодировании содержимого страницы / ответа.Я говорю это потому, что, пытаясь разобраться в сути проблемы, я создал тест IBundleTransform, основанный на встроенном классе CssMinify, который, как мне кажется, демонстрирует, что проблема находится внутри внутренних элементов * 1016.* сам класс.

Bundle b = new Bundle("~/Content/Test");
b.Include("~/Content/Test.css");
b.Transforms.Add(new CustomMinifier());
bundles.Add(b);

...

public class CustomMinifier : CssMinify
{
    public override void Process(BundleContext context, BundleResponse response)
    {
        base.Process(context, response);
    }
}

Вставка перерыва в методе Process и проверка response.Contents до и после вызова base.Process выявляет

До

@charset 'utf-8';

.test-class:after {
    content: '\00000a';
    white-space: pre;
}

После

@charset 'utf-8';.test-class:after{content:'\n';white-space:pre}

Могу ли я что-нибудь сделать, чтобы обойти этоповедение?

Большое спасибо.

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