2013-10-13 45 views
0

缩小的文件是否可以使用.NET缩小/捆绑机制来创建一个包,将在子目录缩小的文件中搜索:.NET缩小 - 寻找一个子目录

未压缩:

/css/jquery-ui.css 
/css/fullcalendar.css 
/css/bootstrap.css 

精缩:

/css/minified/jquery-ui.min.css 
/css/minified/fullcalendar.min.css 
/css/minified/bootstrap.css 

我有大约12个独立的样式表和20+脚本,我已经和与加倍的压缩版本。我想让他们分开只是为了一点组织。这可能吗?

回答

1

在Asp.Net MVC中完成捆绑和缩小的方式是通过运行时的动态处理。当你创建一个bundle时,它可以被注入任何Asp.Net页面。如果您处于调试模式,捆绑器将以完整格式发送捆绑包中的每个项目,以便于调试。如果您处于发行模式,捆绑器会自动将捆绑中的单个文件的内容解析为单个内存文件流,然后将其缩小。没有必要在项目中明确地包含css/javascript文件的完整版本和缩小版本。然而,由于每ASP.Net Documentation

捆扎框架如下几种常见的约定,如:

  • 选择“.min”文件发布时“FileX.min.js”和“FileX.js “存在。
  • 选择非“.min”版本进行调试。
  • 忽略仅由IntelliSense使用的“-vsdoc”文件(如jquery-1.7.1-vsdoc.js)。

基本上,如果你有两个完整和精缩版,那么框架将喜欢使用的预精缩版在涅槃文件本身。

在发布模式下加载页面时,捆绑和缩小的效果表现为整个捆绑包的单个css或js文件流,通过对服务器的单个调用表示,例如, http://localhost/MvcBM_time/bundles/AllMyScripts?v=r0sLDicvP58AIXN_mc3QdyVvVj5euZNzdsa2N1PKvb81

实际上,将创建一个与捆绑包名称相匹配的唯一路由(本例中为AllMyScripts)。查询字符串v有一个值标记,它是用于缓存的唯一标识符。只要包不变,ASP.NET应用程序就会使用此令牌请求AllMyScripts包。如果包中的任何文件发生更改,ASP.NET优化框架将生成一个新的令牌,以确保浏览器对该包的请求将获得最新的捆绑包。

至于包含来自多个目录的文件,最简单的方法是使用通配符模式匹配。 Include方法中指定的虚拟路径和IncludeDirectory方法中的搜索模式可以接受一个*通配符作为最后一个路径段中的前缀或后缀。搜索字符串不区分大小写。 IncludeDirectory方法可以选择搜索子目录。

+0

我知道所有这一切。如果它们存在,我只想让捆绑器使用我的.min文件,但我希望它们位于主文件夹的另一个目录中。 – Dismissile

+0

是的,正如我在最后所说的那样,'IncludeDirectory'方法有搜索子目录的选项。例如'bundles.Add(new StyleBundle(“〜/ allStyles”)。IncludeDirectory(“〜/ Styles”,“* .css”,true));'将所有内容添加到'/ Styles'目录中,它的子目录 – Claies

+0

我想那种得到我想要的。 – Dismissile