2008-10-07 9 views
6

मैं प्रोजेक्ट फ़ाइलों की एक सूची प्राप्त करने के लिए निम्न का उपयोग करता हूं जिन्हें संकलित करने की आवश्यकता है। प्रत्येक परियोजना परियोजना निर्देशिका की एक उपनिर्देशिका में संग्रहीत है।क्या कोई एमएसबिल्ड कार्य है जो पथ नाम को फ़ाइल नाम से निकालेगा?

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

क्या कोई ऐसा कार्य है जिसे मैं प्रत्येक प्रोजेक्ट फ़ाइल में निर्देशिका को निकालने के लिए निकालने के लिए उपयोग कर सकता हूं? मुझे पता है कि मैं ऐसा करने के लिए अपना खुद का काम लिख सकता हूं लेकिन मैं उम्मीद कर रहा था कि कोई पहले से मौजूद है और मुझे बस इसे अभी तक नहीं मिला है।

उत्तर

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> 

मेरे द्वारा चलाए गए परीक्षणों से, इसे नए आइटम समूह में दो बार निर्देशिका सूचीबद्ध नहीं करना चाहिए।

+2

संदर्भ के लिए, आप MSBuild प्रसिद्ध आइटम मेटाडाटा की पूरी सूची http://msdn.microsoft.com/en-us/library/ms164313.aspx पर प्राप्त कर सकते हैं –