2013-10-07 56 views
1

我在我的MVC應用程序中使用的引導較少。 捆綁,然後再縮小少,我用LessBundle(https://github.com/scott-xu/System.Web.Optimization.Less應用LessBundle和CssRewriteUrlTransform時解析圖像時出錯

var bundle = new LessBundle("~/css/home").Include(
      "~/_globalresources/Css/language.less"); 

LessBundle是工作,但不得不解決CSS圖像URL的問題。所有圖片網址都不正確。所以,我在這種情況下應用CssRewriteUrlTransform,但失敗。所有圖片網址也不正確。

var bundle = new LessBundle("~/css/home").Include(
      "~/_globalresources/Css/language.less", new CssRewriteUrlTransform()); 

我嘗試使用StyleBundle而不是LessBundle重新檢查CssRewriteUrlTransform和所有的圖片網址解決不好。

var bundle = new StyleBundle("~/css/home").Include(
       "~/_globalresources/Css/language.less", new CssRewriteUrlTransform()); 

我想,使用LessBundle和CssRewriteUrlTransform都會給出錯誤的結果。

請幫我解決我的問題歸檔我的目的:捆綁較少&解決圖像的URL。謝謝。

回答

0

我解決了我的問題。下載LessTransform並像這樣修復:

public void Process(BundleContext context, BundleResponse bundle) 
     { 
      if (context == null) 
      { 
       throw new ArgumentNullException("context"); 
      } 

      if (bundle == null) 
      { 
       throw new ArgumentNullException("bundle"); 
      } 

      context.HttpContext.Response.Cache.SetLastModifiedFromFileDependencies(); 

      var lessParser = new Parser(); 
      var lessEngine = this.CreateLessEngine(lessParser); 

      var content = new StringBuilder(bundle.Content.Length); 

      var bundleFiles = new List<BundleFile>(); 

      foreach (var bundleFile in bundle.Files) 
      { 
       bundleFiles.Add(bundleFile); 
       var filePath = bundleFile.IncludedVirtualPath; 
       filePath = filePath.Replace('\\', '/'); 
       if (filePath.StartsWith("~")) 
       { 
        filePath = VirtualPathUtility.ToAbsolute(filePath); 
       } 

       if (filePath.StartsWith("/")) 
       { 
        filePath = HostingEnvironment.MapPath(filePath); 
       } 

       this.SetCurrentFilePath(lessParser, filePath); 
       var source = File.ReadAllText(filePath); 
       var transformContent = lessEngine.TransformToCss(source, filePath); 
       foreach (var transform in bundleFile.Transforms) 
       { 
        transformContent = transform.Process(bundleFile.IncludedVirtualPath, transformContent); 
       } 

       content.Append(transformContent); 
       content.AppendLine(); 

       bundleFiles.AddRange(this.GetFileDependencies(lessParser, bundleFile.VirtualFile)); 
      } 

      if (BundleTable.EnableOptimizations) 
      { 
       // include imports in bundle files to register cache dependencies 
       bundle.Files = bundleFiles.Distinct(); 
      } 

      bundle.ContentType = "text/css"; 
      bundle.Content = content.ToString(); 
     } 

解析圖像效果很好。

+0

從System.Web.Optimization.Less項目開始,它看起來像一個提交來解決這個問題 –