カスタム スクリプト マネージャーを使用します。私たちの msbuild プロセスでは、YUI Compressor を使用して縮小バージョンを作成しますが、複数の小さな .js ファイルを 1 つの大きなファイルに結合することもできます。これにより、リクエストの数が減り、ロード時間が短縮されます。縮小バージョンと結合バージョンは、デバッグ可能なバージョンと並行して作成されます。
実行時に、scriptmanager はコントロールによって呼び出され、最小化されていない名前で参照される特定のスクリプトを登録します。スクリプト マネージャーは、これらのスクリプトを DEBUG モードでインクルードします (ただし、ClientScriptManager のように本文ではなく、HEAD にスクリプトをインクルードするトリックを実行します)。RELEASE モードでは、scriptmanager は、既知の特定のスクリプトを縮小された対応するスクリプトに置き換えます。1 つのファイルに結合されたスクリプトの場合、マネージャは複数回呼び出され、そのたびに同じ結合された縮小ファイルが登録されます。一部のファイルは外部でホストされています。これは scriptmanager によっても処理されます。
欠点:
- どのファイルが縮小されているかについての知識が重複しています。scriptmanager とビルド スクリプトの両方が同期している必要があります。
- 新しいスクリプトが追加されても、自動的に縮小されることはありません (個人的にはこれは良い点だと思います。縮小を選択できるようにしたいです)。
ところで、MSBuild での実行に C# ポートは使用しません。最初に試したときは、バグが多すぎました。Exec タスクで YUI Compressor を呼び出すだけです。