在MSBuild中使用通配符包含/排除特定文件

时间:2014-08-05 14:56:04

标签: msbuild

我有一个包含未压缩和缩小jQuery副本的目录。根据我的部署方案,我可能只想分发一个或另一个。根据Seva Titov的回答,我有一个包含以下项目的ItemGroup:

<jQueryFiles Include="$(MSBuildThisFileDirectory)..\..\js\jquery\*.js"
             Exclude="$(MSBuildThisFileDirectory)..\..\js\jquery\*.min.js" />

将只抓取jquery.2.1.1.js并排除缩小版本。

相反,只有:

更简单
<jQueryFiles Include="$(MSBuildThisFileDirectory)..\..\js\jquery\*.min.js" />

只会抓取缩小的版本。

但是,如果我有一个场景,文件夹还包括其他要复制的文件,如果图像怎么办?

我可以通过使用:

来推广使用递归复制非缩小文件
<jQueryFiles Include="$(MSBuildThisFileDirectory)..\..\js\jquery\**\*.*"
             Exclude="$(MSBuildThisFileDirectory)..\..\js\jquery\**\*.min.*" />

我现在的问题是,如何实现相反的效果并获取除了普通“.js”之外的任何扩展名的所有文件?所以我可能想要“jquery \ images \ foo.png”和“jquery \ jquery.2.1.1.min.js”,但我想要排除未经编辑的js文件。

1 个答案:

答案 0 :(得分:0)

使用项目组元素的Exclude属性很容易实现。 E.g:

<jQueryFiles 
    Include="$(MSBuildThisFileDirectory)..\..\js\jquery\*.js" 
    Exclude="$(MSBuildThisFileDirectory)..\..\js\jquery\*.min.js" />