我将在VS2008/Framework 3.5中的Asp.Net MVC 1.0项目的末尾阶段,并尝试做一些性能优化。在我的项目中,我使用了几个不同的“主题”,具体取决于登录用户的角色。我的主题文件夹结构就像这样...使用MSBuild枚举文件夹
\Themes
\Theme1
\Css
\Folder1
\CssFile1.css
\CssFile2.css
\Folder2
\CssFile1.css
\CssFile2.css
\Images
<Images go here>
\Theme2
\Css
\Folder1
\CssFile1.css
\CssFile2.css
\Folder2
\CssFile1.css
\CssFile2.css
\Images
<Images go here>
随着新客户的加入,新的主题将被添加到此文件夹结构中。
我正在使用Yahoo! UI Library:YUI Compressor for .Net (这真的很酷)来缩小和合并我的css(和js)文件。
我按照http://yuicompressor.codeplex.com/wikipage?title=Sample%20MSBuild.xml%20File&ProjectName=yuicompressor的示例通过生成后事件运行MSBuild脚本来执行缩小/合并任务。
一切都很正常,只是当我使用类似<CssFiles Include="..\Themes\**\*.css" />
在我的ItemGroup指定到哪里可以得到css文件,从每一个主题的所有CSS文件合并成一个文件,这样的...
\Themes
\SylesSheetFinal.css
我想的却是在主题合并只有CSS,创造了每一个CSS文件...
\Themes
\Theme1
\StyleSheetFinal1.css
\Theme2
\StyleSheetFinal2.css
我真的很新的MSBuild。有谁知道我如何修改示例以自动遍历每个主题文件夹,并为每个文件夹创建缩小/合并样式表?主题可以经常添加或删除,所以我不想将每个主题路径手动包含到我的ItemGroup中。相反,我希望MSBuild脚本自动遍历主题根目录下的子文件夹,而不管文件夹的数量。
谢谢!
正如我在文章中提到的,我需要遍历任意数量的子文件夹而不知道存在多少个子文件夹。您的示例(以及afik批处理)要求我事先知道文件夹列表。 – racingcow
从提供的链接中,您可以找到http://sedodream.com/2006/08/15/MSBuildBatching.aspx这篇博客文章,请阅读它。 –