2009-09-03 10 views
28

मैं किसी अन्य एमएसबिल्ड कार्य द्वारा उपयोग किए जाने के लिए, एमएसबिल्ड कार्य में पथ की गणना करना चाहता हूं। इसे पूरा करने का सबसे अच्छा तरीका क्या है?एक एमएसबिल्ड कार्य से वापसी आउटपुट?

पर्यावरण चर सेट करना, कंसोल पर प्रिंट करना, ...?

उत्तर

42

किसी संपत्ति या आइटम का उपयोग करें। आपका एमएसबिल्ड जो पथ की गणना करता है, इसे एक संपत्ति के रूप में वापस कर देता है और आप इस संपत्ति का उपयोग अपने अन्य कार्य के लिए इनपुट के रूप में करते हैं।

public class CalculatePathTask : ITask 
{ 
    [Output] 
    public String Path { get; set; } 

    public bool Execute() 
    {         
     Path = CalculatePath(); 

     return true; 
    } 
} 
<Target Name="CalculateAndUsePath"> 
    <CalculatePathTask> 
    <Output TaskParameter="Path" PropertyName="CalculatePath"/> 
    </CalculatePathTask> 

    <Message Text="My path is $(CalculatePath)"/> 
</Target> 

आप दो MSBuild परियोजना के बीच कोई मान पारित करने के लिए की जरूरत है, तो आप एक तिहाई एक है कि MSBuild कार्य का उपयोग अन्य फोन और TargetOutputs तत्व का उपयोग करेगा मूल्य वापस पाने के लिए बनाने चाहिए कि आप चाहते हैं।

+2

बस एक छोटा सा नोट: मेरे मामले में 'ItemName' काम नहीं कर रहा था। जैसे ही मैंने इसे 'PropertyName' में बदल दिया, यह एक आकर्षण की तरह काम करता था। – sebagomez

+0

इसे आजमाया लेकिन 'टास्क पैरामीटर "पैरामीटर" MyCustomTask "कार्य द्वारा समर्थित नहीं है। कार्य पर मौजूद पैरामीटर सत्यापित करें, और यह एक सेटटेबल सार्वजनिक इंस्टेंस प्रॉपर्टी है – jpierson

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