4

.NET の新しい最適化フレームワーク (縮小とバンドル用) を使用して、LESS ファイルを CSS に変換するのに苦労しています。

LESS ファイルのみを含むディレクトリがあります。

次のコードを使用して、これらをまとめて CSS に変換します。

var lessBundle = new Bundle("~/st-style-common-2")
    .IncludeDirectory("~/Admin/Resources/styles/", "*.less");
lessBundle.Transforms.Add(new LessTransform());
lessBundle.Transforms.Add(new CssMinify());
bundles.Add(lessBundle);

ここで詳しく説明されている LessTransform クラスも使用しました。

debug="false" の場合、ファイルは標準の CSS に変換され、予想どおり 1 つにコンパイルされます。

ただし、debug="true" の場合、ファイルは変換されず、HTML に一連の .less URL が残ります。これは、ブラウザーが理解できず、IIS がハンドラーを持っていないように見えます。

これらの .less ファイルを提供するハンドラーを作成できることはわかっていますが、その必要があるとは思いません。Optimization Framework は、デバッグ中でも LESS を CSS に変換しませんか?

4

3 に答える 3

4

解決策自体は見つかりませんでしたが、LESS ファイルを CSS (および縮小版の CSS バージョン) に自動的に変換するWeb Essentials プラグインを使用して、この問題を回避することができました。

これにより、LESS を使用してファイルを保存し、スタイリングの CSS バージョンを自動的にコンパイルすることができます。その後、LESS バージョンではなく CSS バージョンを参照するだけです。

bundles.Add(new StyleBundle("~/styles").Include(
            "~/Admin/Resources/styles/*.css"));
于 2012-11-23T09:50:10.313 に答える
2

LessTransform クラスをどこから取得したかについて言及したチュートリアルのステップ 2 では、dotless NuGet パッケージをインストールする必要があると述べています。Visual Studio パッケージ マネージャーを使用してこれを行うと、.less ハンドラーが Web.config に自動的に登録されます。以下が Web.config にも含まれていることが重要です。

<modules runAllManagedModulesForAllRequests="true">

そうすれば、すべてが自動的に機能し、開発チームは Web Essentials がインストールされていなくてもプロジェクトを操作できます。プロジェクトを操作するために何らかの拡張機能に依存するのは好きではありません (Web Essentials は大好きですが!)

于 2012-11-28T21:45:44.963 に答える
0

問題は、debug=true の場合、デフォルトでは最適化が実行されないことです。常に最適化を実行したいファイルが少ないため、BundleConfig.cs で設定することで明示的に設定できます。

BundleTable.Bundles.EnableOptimizations = true
于 2012-12-06T19:39:48.407 に答える