MSBuild无法找到具有巨大子目录的目录

时间:2015-12-11 11:49:01

标签: msbuild

我想创建一个MSBuild项,其中包含子目录中的所有文件,递归,“node_modules”目录和其他一些目录。

<MyItem Include="MyDir\**\*.*" Exclude="MyDir\node_modules\**\*.*;MyDir\tmp\**\*.*" />

在构建日志中,我看到了:

Input file "MyDir\**\*.*" does not exist.

当我删除“node_modules”目录时,它可以工作。我怀疑MSBuild无法处理它,因为它包含超过30,000个文件和深度子目录结构。有没有办法解决这个问题而不列出我想要包含的所有子目录,这些子目录可能会不时发生变化?

1 个答案:

答案 0 :(得分:0)

好的,我想出了另一种使用CreateItems的方法:

<ItemGroup>
    <InputDirs Include="MyDir" />
    <InputExcludedSubDirs Include="MyDir\tmp;MyDir\node_modules" />
</ItemGroup>

<Target Name="PrepareForMyTarget">
    <ItemGroup>
        <InputSubDirs Include="$([System.IO.Directory]::GetDirectories(&quot;%(InputDirs.Identity)&quot;))" Exclude="@(InputExcludedSubDirs)" />
    </ItemGroup>

    <CreateItem Include="%(InputSubDirs.Identity)\**\*.*">
       <Output TaskParameter="Include" ItemName="Inputs" />
   </CreateItem>
</Target>

<Target Name="MyRealTarget" DependsOnTargets="PrepareForMyTarget">
     ... use Inputs item here as normal ...
</Target>