2008-10-07 40 views
6

Tôi sử dụng phần sau để có danh sách các tệp dự án cần được biên soạn. Mỗi dự án được lưu trữ trong thư mục con của thư mục dự án.Có tác vụ MSBuild nào sẽ trích xuất đường dẫn cung cấp từ tên tệp không?

<ItemGroup> 
    <dprs Include="c:\projects\**\*.dpr" />  
</ItemGroup> 

Có nhiệm vụ nào tôi có thể sử dụng để trích xuất để trích xuất thư mục mà mỗi tệp dự án không? Tôi biết tôi có thể viết nhiệm vụ của riêng tôi để làm điều này nhưng tôi đã hy vọng rằng một trong những đã tồn tại và tôi chỉ đơn giản là đã không tìm thấy nó được nêu ra.

Trả lời

5

Nếu tôi hiểu câu hỏi một cách chính xác, bạn không nên cần một tác vụ - bạn có thể làm điều này với dữ liệu meta nổi tiếng. Điều này có làm điều này không?

<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> 

Từ các thử nghiệm tôi chạy, không nên liệt kê thư mục hai lần trong nhóm mục mới.

+2

Để tham khảo, bạn có thể nhận danh sách đầy đủ về Siêu dữ liệu mục MSBuild nổi tiếng tại http://msdn.microsoft.com/en-us/library/ms164313.aspx –

Các vấn đề liên quan