7

我正在使用批处理文件来连接我所有的 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 文件都经过验证,并且仅在单独的文件加入时才在组合文件中抛出错误。

4

3 回答 3

9

问题在于文件中的字节顺序标记 (BOM)。字节顺序标记用于 unicode 文件告诉处理器字节的顺序。你可以在这里读更多关于它的内容:

http://en.wikipedia.org/wiki/Byte_order_mark

问题是 Visual Studio 正在将这些标记添加到您的 css 文件中,当您通过连接将它们组合起来时,BOM 最终会出现在文本中间,从而搞砸了。

当您转到“另存为”对话框时,可以展开“保存”按钮以查看“使用编码保存”选项。这将提示您使用不同的编码,我认为其中一个 Unicode 选项将省略 BOM(列表中的某处是没有签名的 UTF-8)。

我不知道如何将 Visual Studio 设置为默认使用特定编码。

为了解决这些问题,我创建了一个程序来连接符合 BOM 的文件。我使用它而不是复制或 unix cat。

于 2011-05-23T15:53:40.017 回答
0

您可能想使用YUICompressor .NET,而不是自己编写脚本。

于 2011-05-23T15:43:49.877 回答
-1

我编写了一个漂亮的小命令行程序,它将所有文件(即 css 等)组合在一个目录中,并为您删除 BOM(字节顺序标记)。它大约有 5 行代码,并使用 cssmin.js 为您处理缩小。还有一个示例说明它在 Visual Studio 生成后事件中的外观。检查一下

于 2016-02-19T17:22:45.180 回答