我正在使用批处理文件来连接我的所有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 Lexical error at line 119, column 1. Encountered: "?" (63), after : "" ??? /**** left column ****/
所有单独的CSS文件都会验证,并且只有单个文件加入时才会在组合文件中抛出错误。
答案 0 :(得分:8)
问题在于文件中的字节顺序标记(BOM)。字节顺序标记用于unicode文件,以告诉处理器字节的顺序。你可以在这里阅读更多相关信息:
http://en.wikipedia.org/wiki/Byte_order_mark
问题在于Visual Studio正在将这些标记添加到您的css文件中,当您通过连接将它们组合在一起时,BOM会在文本的中间结束,搞砸了。
当您转到“另存为”对话框时,可以展开“保存”按钮以查看“使用编码保存”选项。这将提示您输入不同的编码,我认为其中一个Unicode选项会遗漏BOM(列表中的某个位置是UTF-8,没有签名)。
我不知道默认情况下如何将Visual Studio设置为使用特定的编码。
为了解决问题,我创建了一个程序来连接符合BOM的文件。我使用它而不是复制,或使用unix cat。
答案 1 :(得分:0)
您可能希望使用YUICompressor .NET,而不是自己编写脚本。
答案 2 :(得分:-1)
I wrote a nifty little command line program将目录中的所有文件(即css等)组合在一起,并为您删除BOM(字节顺序标记)。这是大约5行代码,并使用cssmin.js来处理缩小。还有一个示例,说明它在Visual Studio后期构建事件中的外观。检查o