2009-08-21 16 views

उत्तर

12

लक्ष्य तत्व एक OnError विशेषता त्रुटि पर अमल करने के लिए एक लक्ष्य के लिए सेट कर सकते हैं नहीं है, लेकिन के रूप में यह केवल कार्यान्वित करता है, तो लक्ष्य कोई त्रुटि है तो यह केवल अपने आधे परिदृश्य को हल करती है।

क्या आपने परीक्षण 'चरण' का प्रतिनिधित्व करने के लिए लक्ष्य एकत्रित करने पर विचार किया है जिसे आप निष्पादित करना चाहते हैं?

<PropertyGroup> 
    <TestSteps>TestInitialization;Test;TestCleanup</TestSteps> 
</PropertyGroup> 

'TestInitialization' लक्ष्य है, जहां आप किसी भी परीक्षा प्रारंभ प्रदर्शन कर सकते हैं, 'टेस्ट' लक्ष्य परीक्षण निष्पादित करता है, 'TestCleanup' लक्ष्य पद परीक्षण किसी भी प्रकार को साफ करता है।

फिर, इन लक्ष्यों को RunEachTargetSeparately विशेषता सच करने के लिए सेट का उपयोग कर CallTarget कार्य का उपयोग कर निष्पादित। सफलता या विफलता के बावजूद यह सभी लक्ष्य निष्पादित करेगा।

पूरा नमूना नीचे है:

<Project DefaultTargets = "TestRun" 
    xmlns="http://schemas.microsoft.com/developer/msbuild/2003" > 

    <!-- Insert additional tests between TestInitialization and TestCleanup as necessary --> 
    <PropertyGroup> 
     <TestSteps>TestInitialization;Test;TestCleanup</TestSteps> 
    </PropertyGroup> 

    <Target Name = "TestRun"> 

     <CallTarget Targets="$(TestSteps)" RunEachTargetSeparately="True" /> 

    </Target> 

    <Target Name = "TestInitialization"> 
     <Message Text="Executing Setup..."/> 
    </Target> 

    <Target Name = "Test"> 
     <Message Text="Executing Test..."/> 

     <!-- this will fail (or should unless you meet the conditions below on your machine) --> 
     <Copy 
      SourceFiles="test.xml" 
      DestinationFolder="c:\output"/> 
    </Target> 

    <Target Name = "TestCleanup"> 
     <Message Text="Executing Cleanup..."/> 
    </Target> 

</Project> 
+0

अभी यह परीक्षण करने आया है, और यह पूरी तरह से काम करता है। बल्कि पूर्ण उदाहरण के लिए धन्यवाद। – ripper234

+0

एनपी! खुशी हुई यह काम किया! –

+1

अच्छा जवाब, हालांकि यह जानना अच्छा होगा कि 'रीथ्रो' कैसे करें, कोशिश/आखिरकार समानता जारी रखें। सफाई को निष्पादित करने की आवश्यकता हो सकती है चाहे कोई फर्क नहीं पड़ता, लेकिन निर्माण अभी भी विफल हो गया है। –

0

या <OnError> का उपयोग त्रुटि के मामले में अपने लक्ष्य फोन करने के लिए, और DependsOnTargets या CallTarget सामान्य मामले में अपने ही लक्ष्य फोन करने के लिए।

संबंधित मुद्दे