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 を使用しており、ファイルはすべてビジュアル スタジオで編集されています。

私が抱えている問題は、各ファイルの最後に謎の隠し文字が追加されていることです。これを連結すると、結果の css が無効になります。

126 BLOCKQUOTE, Q 行 119、列 1 の字句エラー。
 遭遇:「?」(63)、後: "" ??? /**** 左列 ****/

個々の CSS ファイルはすべて検証され、個々のファイルが結合された時点で結合されたファイルにのみエラーがスローされます。

4

3 に答える 3

9

問題は、ファイルのバイト オーダー マーク (BOM) が原因です。バイトオーダーマークは、ユニコードファイルがプロセッサにバイトの順序を伝えるためのものです。詳細については、こちらをご覧ください。

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

問題は、Visual Studio がこれらのマークを css ファイルに追加していて、それらを連結して結合すると、BOM がテキストの途中で終わってしまい、うまくいかないことです。

[名前を付けて保存] ダイアログに移動すると、[保存] ボタンを展開して [エンコード付きで保存] オプションを表示できます。これにより、別のエンコーディングが求められます。Unicode オプションの 1 つが 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 に答える