2011-02-23 5 views
9

मैं msbuild एक्सटेंशन पैक कार्य का उपयोग कर किसी फ़ोल्डर के अस्तित्व को कैसे विश्वसनीय रूप से सत्यापित कर सकता हूं?msbuild एक्सटेंशन पैक का उपयोग कर फ़ोल्डर के अस्तित्व को सत्यापित करें?

मैं त्रुटि को फेंकने और निर्माण को रोकने के बिना इसे कैसे कर सकता हूं?

उत्तर

26

क्या आप लक्ष्य पर मौजूदा स्थिति का उपयोग कर सकते हैं?

यह केवल IFExists को निष्पादित करेगा यदि कोई निर्देशिका या फ़ाइल है जिसे msbuild फ़ाइल के समान निर्देशिका में परीक्षण कहा जाता है।

<ItemGroup> 
    <TestPath Include="Testing" /> 
</ItemGroup> 
<Target Name="OnlyIfExists" Condition="Exists(@(TestPath))"> 
    <Message Text="This ran!" Importance="high" /> 
</Target> 
+1

आपको बहुत बहुत धन्यवाद। यह अच्छा और स्पष्ट है। –

8

एक्सटेंशन पैक का उपयोग करने की कोई आवश्यकता नहीं है, एमएसबिल्ड इसे ठीक से संभाल सकता है। आपको यह विचार करने की आवश्यकता है कि यह एक ऐसा फ़ोल्डर है जिसे निर्माण के हिस्से के रूप में बनाया या हटाया जा सकता है। यदि ऐसा है, तो आप एक लक्ष्य के भीतर घोषित गतिशील आइटम समूह का उपयोग करना सुनिश्चित करना चाहते हैं (एक से अधिक फ़ोल्डर की जांच के मामले में) या यदि आप केवल एक जांच कर रहे हैं तो आप पथ का उपयोग कर सकते हैं। यह उदाहरण दोनों दिखाता है:

<Target Name="MyTarget"> 
    <!-- single folder with property --> 
    <PropertyGroup> 
     <_CheckOne>./Folder1</_CheckOne> 
     <_CheckOneExistsOrNot 
      Condition="Exists('$(_CheckOne)')">exists</_CheckOneExistsOrNot> 
     <_CheckOneExistsOrNot 
      Condition="!Exists('$(_CheckOne)')">doesn't exist</_CheckOneExistsOrNot> 
    </PropertyGroup> 
    <Message 
     Text="The folder $(_CheckOne) $(_CheckOneExistsOrNot)" 
     /> 

    <!-- multiple folders with items --> 
    <ItemGroup> 
     <_CheckMultiple Include="./Folder2" /> 
     <_CheckMultiple Include="./Folder3" /> 
    </ItemGroup> 
    <Message 
     Condition="Exists('%(_CheckMultiple.Identity)')" 
     Text="The folder %(_CheckMultiple.Identity) exists" 
     /> 
    <Message 
     Condition="!Exists('%(_CheckMultiple.Identity)')" 
     Text="The folder %(_CheckMultiple.Identity) does not exist" 
     /> 
</Target> 
संबंधित मुद्दे