12

シンプルな ASP.Net MVC4 テスト アプリケーションで、ドットのない NuGet パッケージをインストールし、このチュートリアルに従いました。

私の.lessファイルは CSS に正しく解析されており、debug=true.

<link href="/Public/less/main.less" rel="stylesheet"/>
<link href="/Public/less/home.less" rel="stylesheet"/>
<link href="/Public/less/a.less" rel="stylesheet"/>
<link href="/Public/less/b.less" rel="stylesheet"/>
<link href="/Public/less/c.less" rel="stylesheet"/>

ただし、debug=false縮小して単一のスタイルシートに結合するために設定すると、次のようになります。

<link href="/Public/less?v=" rel="stylesheet"/> // NOT WORKING!

これが私のバンドル構成ファイルです。繰り返しますが、チュートリアルから直接取得しました。

public class BundleConfig
{
    // For more information on Bundling, visit http://go.microsoft.com/fwlink/?LinkId=254725
    public static void RegisterBundles(BundleCollection bundles)
    {

        // Compile .less files and create a bundle for them.
        var lessBundle = new Bundle("~/Public/less").Include(
                                                        "~/Public/less/main.less",
                                                        "~/Public/less/home.less",
                                                        "~/Public/less/a.less",
                                                        "~/Public/less/b.less",
                                                        "~/Public/less/c.less");
        lessBundle.Transforms.Add(new LessTransform());
        lessBundle.Transforms.Add(new CssMinify());
        bundles.Add(lessBundle);
    }
}

そして私のレイアウトファイルで:

<head>
    @Styles.Render("~/Public/less")
</head>

そして、これが私の LessTransform クラスです:

public class LessTransform : IBundleTransform
{
    public void Process(BundleContext context, BundleResponse response)
    {
        response.Content = dotless.Core.Less.Parse(response.Content);
        response.ContentType = "text/css";
    }
}

バンドルが正しく機能しない理由についてのアイデアはありますdebug=falseか?

4

4 に答える 4

11

デフォルトでは、MVC 4.0 のバンドルと縮小は、デバッグ モードでは無効になっています。LessTransform.Processメソッドにブレークポイントを設定してテストできます。プロジェクトがまたはLessTransform.Processで実行された場合にのみ呼び出されます。debug = falseBundleTable.EnableOptimizations = true

<link href="/Public/less?v=" rel="stylesheet"/>バンドルの結果が空だったことを意味します。

以下のファイルの少なくとも 1 つが CSS コンテンツを生成することを確認してください。そうである場合は、LessTransformクラスを確認してください。

public class LessTransform : IBundleTransform
{
    void IBundleTransform.Process(BundleContext context, BundleResponse response)
    {
        response.Content = Less.Parse(response.Content);
        response.ContentType = "text/css";
    }
}

RegisterBundlesBundleTable.EnableOptimizations = true;メソッドを配置することで、最適化メカニズム (バンドルと縮小) のデフォルト設定をデバッグ モードでオーバーライドでき、デバッグして結果を確認できます。Less.Parse(response.Content);

于 2013-03-29T12:55:50.057 に答える
3

この問題は、 を にコンパイルする際のサイレント エラーでし.lesscss


ブレークポイントを使用して、ライブラリを使用してコンパイルするLessTransformクラスをチェックしました。dotless

public class LessTransform : IBundleTransform
{
    public void Process(BundleContext context, BundleResponse response)
    {
        response.Content = Less.Parse(response.Content); // Breakpoint here.
        response.ContentType = "text/css";
    }
}

response.Contentカーソルを合わせるとコードが表示されますが、コードlessの後に​​は空になることに気付きました。Less.Parseresponse.Content

コードをチェッカーで実行しlessたところ、コードに構文エラーがあることに気付きました。

エラーを修正すると、バンドルと縮小は期待どおりに適切に機能しました。

于 2013-03-30T23:25:51.663 に答える
0

私が誤解していない限り、あなたの言ったことは意味がありません。

debug = trueスタイル シートが個別に参照されているためバンドルされていないため、単一のファイルに縮小/バンドルされていないように見える場合は、debug が true に設定されている場合に予想されるため、スクリプト/スタイルを使用せずに簡単にデバッグできます。縮小されてバンドルされたコードを通り抜ける必要があります。

debug = false2 つの URL しか取得していないため、圧縮/バンドルが行われているように見えます。

奇妙に見えることの 1 つは、less URL に関連付けられたハッシュがないことです。v= が空白です。これは調べる必要があるかもしれません。

また、ブラウザーに URL を読み込んでみて、<localaddress>/Public/less?v=圧縮/バンドルに問題がある場合に返される内容を確認することもできます。通常、ファイルの上部に警告が表示されます。

于 2013-03-25T00:31:47.920 に答える
0

空のファイルが少ないようです。したがって、ハッシュが生成されなかったのは正常です。

ちょうどあなたが知っているので。ファイルが少ない場合は bundle を使用する必要はありません。import キーワード insinde less を使用して、ファイルを結合できます。@import "a.less";

于 2013-03-28T08:34:06.083 に答える