我有以下ASP.NET MVC捆绑包:

var lessBundle = new Bundle("~/bundles/common.css");

lessBundle.Include("~/CSS/Header.less",
                   "~/CSS/Footer.less");

lessBundle.Transforms.Add(new LessTransform());

bundles.Add(lessBundle);


BundleTable.EnableOptimizations = true时,按预期方式捆绑在一起,并输出为:

<link href="/bundles/common.css?v=xxxx-xxxx-xxxx-xxxx" rel="stylesheet"/>


BundleTable.EnableOptimizations = false时,输出为:

<link href="/CSS/Header.less" rel="stylesheet"/>
<link href="/CSS/Footer.less" rel="stylesheet"/>


有没有一种方法可以更改此扩展名,以使文件扩展名显示为.css而不是.less

因此:

<link href="/CSS/Header.css" rel="stylesheet"/>
<link href="/CSS/Footer.css" rel="stylesheet"/>

最佳答案

我认为按照documentation的说明将EnableOptimizations设置为false时,您不能更改文件扩展名...


  除非EnableOptimizations为true或将Web.config文件的编制元素中的debug属性设置为false,否则文件将不会被捆绑或缩小。此外,将不使用文件的.min版本,将选择完整的调试版本。 EnableOptimizations会覆盖Web.config文件中编译元素中的debug属性。


这意味着编译模式和EnableOptimizations属性将定义是否捆绑和缩小这些资源。在您的情况下,当您将EnableOptimizations设置为false时,优化引擎将不会对这些资源进行任何转换,也不会完全按照您在此处定义的方式呈现它们。

lessBundle.Include("~/CSS/Header.less",
               "~/CSS/Footer.less");


因此,输出html(在razor的帮助下)将呈现以下链接...

<link href="/CSS/Header.less" rel="stylesheet"/>
<link href="/CSS/Footer.less" rel="stylesheet"/>


这是默认的行为,如果您不想做任何花哨的事情,没有什么可以阻止您窥视asp.net stack ...这是开源的,并实现了您想要的行为

更新资料

实际上,Optimization Framework的Source是一个单独的扩展,您可以找到here

09-25 15:21