0

すべてのスクリプトを 1 つにまとめようとしています。メイン フォルダー「scripts」と他の「scripts/other」の 2 つのフォルダーがあります。

私がしようとすると:

BundleTable.Bundles.Add(new ScriptBundle("~/scripts/all").Include("~/Scripts/*.js", "~/Scripts/other/*.js"));

「scripts/other」のスクリプトは含まれません。しかし、順序を逆にすると:

BundleTable.Bundles.Add(new ScriptBundle("~/scripts/all").Include("~/Scripts/other/*.js", "~/Scripts/*.js"));

できます!!誰かが理由を教えてくれますか?

4

2 に答える 2

5

IncludeDirectoryメソッドを直接 呼び出して、同じ問題が発生するかどうかを確認してみてください。

ScriptBundle("~/scripts/all").IncludeDirectory("~/Scripts", "*.js").IncludeDirectory("~/Scripts/other", "*.js"));

これが機能する場合は、ここにバグがある可能性があります。

于 2012-06-15T23:07:15.553 に答える
1

何が起こっているのかわかりませんが、これはSystem.Web.Optimization.Bundle内のコードです。

// System.Web.Optimization.Bundle
public Bundle Include(params string[] virtualPaths)
{
    for (int i = 0; i < virtualPaths.Length; i++)
    {
        string text = virtualPaths[i];
        Exception ex = Bundle.ValidateVirtualPath(text, "virtualPaths");
        if (ex != null)
        {
            throw ex;
        }
        if (text.Contains('*'))
        {
            int num = text.LastIndexOf('/');
            string text2 = text.Substring(0, num);
            if (text2.Contains('*'))
            {
                throw new     ArgumentException(string.Format(CultureInfo.CurrentCulture,     OptimizationResources.InvalidPattern, new object[]
                {
                text
            }), "virtualPaths");
        }
        string text3 = "";
        if (num < text.Length - 1)
        {
            text3 = text.Substring(num + 1);
        }
        PatternType patternType = PatternHelper.GetPatternType(text3);
        ex = PatternHelper.ValidatePattern(patternType, text3, "virtualPaths");
        if (ex != null)
        {
            throw ex;
        }
        this.IncludeDirectory(text2, text3);
    }
    else
    {
        this.IncludeFile(text);
    }
}
return this;
}
于 2012-06-05T21:48:17.010 に答える