根据名录:
<ItemGroup>
<Dirs Include="FooDir1" />
<Dirs Include="FooDir2" />
</ItemGroup>
我如何能够得到一份所有分局的名单。
将这一清单与<代码>(实体)**”改为“,与任何内容不相符,并与<代码>(实体)***”改为“,然后与<代码>RelativeDir产生只包含档案的目录。
目前,我不得不使用C#:
<UsingTask TaskName="GetSubdirectories" TaskFactory="CodeTaskFactory"
AssemblyFile="$(MSBuildToolsPath)Microsoft.Build.Tasks.v4.0.dll">
<ParameterGroup>
<Directories ParameterType="Microsoft.Build.Framework.ITaskItem[]" Required="true" />
<SubDirectories ParameterType="Microsoft.Build.Framework.ITaskItem[]" Output="true" />
</ParameterGroup>
<Task>
<Code Type="Fragment" Language="cs"><![CDATA[
var result = new List<ITaskItem>();
foreach (var dirItem in Directories) {
foreach (var dir in Directory.GetDirectories(dirItem.ItemSpec, "*", SearchOption.AllDirectories)) {
if (dir.Contains(@".svn") || dir.EndsWith(@".svn")) continue;
result.Add(new TaskItem(dir));
}
}
SubDirectories = result.ToArray();
]]></Code>
</Task>
</UsingTask>
<GetSubdirectories Directories="@(Dirs)">
<Output TaskParameter="SubDirectories" ItemName="SubDirs" />
</GetSubdirectories>
但我要知道,有没有一种更为容易的办法。