是否有一个MSBuild任务将从文件名中提取路径给出?

Law*_*nti 6 msbuild

我使用以下内容来获取需要编译的项目文件列表.每个项目都存储在projects目录的子目录中.

<ItemGroup>
   <dprs Include="c:\projects\**\*.dpr" />      
</ItemGroup>
Run Code Online (Sandbox Code Playgroud)

是否有一项任务可用于提取以提取每个项目文件所在的目录?我知道我可以写自己的任务来做到这一点,但我希望一个已经存在,而我还没有找到它.

bro*_*lum 5

如果我正确理解了这个问题,那么您不需要任务 - 您可以使用众所周知的元数据来完成此任务.这样做有用吗?

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="3.5">
    <ItemGroup>
        <dprs Include="c:\projects\**\*.dpr" />      
    </ItemGroup>

    <Target Name="Default">
      <CreateItem Include="%(dprs.RelativeDir)">
        <Output ItemName="_ProjectFileLocations" TaskParameter="Include" />
      </CreateItem>
      <Message Text="@(_ProjectFileLocations->'%(FullPath)', '%0D%0A')" />
    </Target>
</Project>
Run Code Online (Sandbox Code Playgroud)

从我运行的测试中,它不应该在新项目组中列出两次目录.

  • 作为参考,您可以在http://msdn.microsoft.com/en-us/library/ms164313.aspx上获取MSBuild知名项元数据的完整列表. (2认同)