Удаление скрытых символов конца файла (BOM) в visual studio
Я использую командный файл для объединения всех моих CSS-файлов
copy /b reset.css+action-plan.css+buttons.css+behaviours.css+footer.css+forms.css+header.css+home.css+layout.css+lightbox.css+print.css+questionnaire.css+typography.css+you-told-us.css main.css
Я делал это много раз раньше в различных проектах, но этот проект использует.NET, и все файлы редактируются в Visual Studio.
У меня проблема в том, что в конце каждого файла добавляются загадочные скрытые символы, что приводит к тому, что полученный css становится недействительным.
126 BLOCKQUOTE, Q Лексическая ошибка в строке 119, столбец 1. Обнаружено: "?" (63), после: ""??? /**** левая колонка ****/
Все отдельные CSS-файлы проверяются, и ошибки выдаются только в объединенный файл в те моменты, когда отдельные файлы объединяются.
3 ответа
Проблема из-за метки порядка байтов (BOM) в ваших файлах. Метка порядка байтов предназначена для файлов Юникода, чтобы сообщить процессору порядок байтов. Вы можете прочитать больше об этом здесь:
http://en.wikipedia.org/wiki/Byte_order_mark
Проблема в том, что Visual Studio добавляет эти метки в ваш CSS-файл, и когда вы объединяете их путем конкатенации, спецификации заканчиваются в середине текста, что приводит к путанице.
Когда вы переходите в диалоговое окно "Сохранить как", вы можете развернуть кнопку "Сохранить", чтобы увидеть параметр "Сохранить с кодировкой". Это побудит вас к другой кодировке, и я думаю, что одна из опций Unicode пропустит спецификацию (где-то в списке UTF-8 без подписи).
Я не знаю, как настроить Visual Studio для использования определенной кодировки по умолчанию.
Чтобы обойти проблемы, я создал программу для объединения файлов, которые будут соответствовать спецификации. Я использую это, а не копировать, или Unix Cat.
Возможно, вы захотите использовать YUICompressor .NET вместо того, чтобы писать это самостоятельно.
Я написал изящную небольшую программу командной строки, которая объединяет все файлы (например, css и т. Д.) В каталоге и удаляет BOM (метку порядка байтов) для вас. Он содержит около 5 строк кода и использует cssmin.js для минимизации за вас. Также есть пример того, как это выглядит в событии пост-сборки Visual Studio. Проверьте это o