プロジェクトで使用されるすべての.jsファイルを含むScriptsフォルダーがあります。 Ajax Minifierタスクを使用して、それぞれの.min.jsファイルを生成します。アプリケーションがデバッグモードで実行されているかリリースモードで実行されているかに応じて、元の.jsファイルまたは縮小されたファイルを含めます。
Scriptsフォルダーは次のようになります。
Scripts/script1.js
Scripts/script1.min.js // Outside the project, generated automatically on build
Scripts/script2.js
Scripts/script2.min.js // Outside the project, generated automatically on build
.min.jsファイルはプロジェクトの外部にあり(元のファイルと同じフォルダーにあります)、プロジェクトを公開するときに宛先フォルダーにコピーされません。
私はビルドタスクを使用した経験がまったくないので(ミニファイアタスクを含めることを除いて)、次の正しい方法について誰かにアドバイスしていただければ幸いです。
ありがとう、
編集:回答から、私はいくつかの詳細を見逃していることがわかり、おそらく問題の間違った解決策を探しています。質問に次の詳細を追加します。
編集(2012年10月):ASP.NET 4.5に含まれるようになりました バンドルと縮小 。現在のバージョンは動的JavaScript生成をあまりサポートしていませんが、それ以外の点ではかなり使いやすく、たとえば、以下で説明するように、ファイルシステムが変更をライブで確認します。独自の圧縮を行う前に、それを試してください!
古い答え:
これをビルド時に実装するのではなく、実行時に実装することをお勧めします。これにはいくつかの利点があります。
これは私が従うプロセスの大まかな概要です:
FileSystemWatcher
を作成します。00_jquery.js
10_init.js
などのプレフィックスを使用すると、ここで順序を制御するのに役立ちます)。ファイル名のリストは、デバッグ目的で保存されます。GZipStream
によって圧縮されます。バージョン固有のトークンは、最新の最終変更日または結果のハッシュのいずれかによって計算されます。lock
で保護されています)に格納されます。ファイルシステムウォッチャーが更新を検出すると、ステップ2が再開され、圧縮が完了するまでバックグラウンドで実行されます。つまり、ロックされます。IHttpHandler
。すべてのURIは、クエリ文字列にバージョン固有のトークンを含みます。これは、IIS静的ファイルハンドラーと結合された縮小バージョンのカスタムhttpハンドラーの両方で無視されますが、キャッシュが簡単になります。context.Response.OutputStream
を介してhttpストリームに直接書き込まれます。このアプローチを使用すると、スクリプトファイルを追加または削除するたびにweb.configオプションをいじる必要がなくなります。アプリの実行中にスクリプトを更新でき、クライアントは次のページビューでスクリプトを要求しますが、有効期限ヘッダーが原因でブラウザーがIf-Not-Modified要求を送信しないため、最適なキャッシュ動作が得られます。通常、スクリプトの圧縮には1秒ほどかかり、圧縮結果は非常に小さいため、静的変数のメモリオーバーヘッドは無視できます(非常に大量のスクリプト/ cssの場合、最大で数100 KB)。
Visual Studioを介してJavascriptの縮小を実行する場合は、次のように開始します。 http://encosia.com/2009/05/20/automatically-minify-and-combine-javascript-in-visual-studio /
それ以外の場合は、Javascriptを自動的に組み合わせて縮小できるツールをお勧めします。私が見た2つのツールは、 Justin Etheredge の Bundler と Combres です。私は現在のプロジェクトでBundlerを使用しており、同僚の1人がCombresを使用しています。 Bundlerは少し使いやすいですが、Combresよりも機能が劣ります。 Bundlerを使用すると、web.configでデバッグがオフになっている場合、縮小および結合されません。つまり、開発環境でjavascriptをデバッグできます。
P.S. BundlerはSquishItに名前が変更されました。
ビルドイベント を確認することをお勧めします。これを使用して、ビルド後を実行するコマンドラインを指定できます。さらに、あなたの質問は これら質問 に似ています。
実際のコピーでは、 [〜#〜] copy [〜#〜] コマンドを使用するだけで簡単に実行できます。
このアプローチがこの状況で役立つかどうかはよくわかりませんが、想像できます... csprojファイルを次のように変更できます。特定のタイプのビルドに含めるファイルに影響を与えます。
特定のタイプでは、構成マネージャーを指します。
デバッグとリリースがデフォルトですが、新しいものを作成することを妨げるものは何もありません。選択した構成に基づいて、構成の一部としてさまざまなファイルを含めることができます。その方法でさまざまなファイルを公開できると思います。私はここに私のブログでその戦略を説明しています: http://realfiction.net/go/1
「ASP.NETプロジェクトの* .jsファイルと* .cssファイルを自動的に縮小、結合、圧縮、およびキャッシュする」に関するこの記事は、おそらくあなたを助けることができます
http://www.codeproject.com/KB/aspnet/CssAndJavaScriptOptimizer.aspx?display=Print