2012-01-20 17 views
67

मैं msbuild साथ कार्यकारी कार्य द्वारा सरल उत्पादन प्राप्त करने के लिए कोशिश कर रहा हूँ के साथ कार्यकारी कार्य आउटपुट प्राप्त:कैसे MSBuild

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 
    <Target Name="Test"> 
    <Exec Command="echo test output"> 
     <Output TaskParameter="Outputs" ItemName="Test1" /> 
    </Exec> 
    <Exec Command="echo test output"> 
     <Output TaskParameter="Outputs" PropertyName="Test2" /> 
    </Exec> 
    <Message Text="----------------------------------------"/> 
    <Message Text="@(Test1)"/> 
    <Message Text="----------------------------------------"/> 
    <Message Text="$(Test2)"/> 
    <Message Text="----------------------------------------"/> 
    </Target> 
</Project> 

लेकिन अगले आउटपुट प्राप्त:

echo test output 
    test output 
    echo test output 
    test output 
    ---------------------------------------- 
    ---------------------------------------- 
    ---------------------------------------- 

मैं कैसे द्वारा उत्पादन प्राप्त कर सकते हैं मेरे स्क्रिप्ट?

+1

[एक MSBuild कार्यकारी कार्य से सभा आउटपुट] के संभावित डुप्लिकेट (http://stackoverflow.com/questions/1519177/gathering-outputs-from-an-msbuild-exec-task) –

+0

करने लगता है सच हो, धन्यवाद, मुझे याद आ रही है docuemntation जानकारी – tbicr

+1

अच्छी तरह से प्रलेखन आमतौर पर नहीं है कि क्या संभव नहीं है, लेकिन क्या है। ऐसा कहकर, आपका प्रश्न सामान्य प्रतीत होता है, इसलिए शायद आपको उचित "समुदाय सामग्री" जोड़नी चाहिए और इस प्रकार एमएसडीएन दस्तावेज में सुधार करना चाहिए। –

उत्तर

5

मैं उस बिंदु पर पहुंच गया हूं जहां मैं एमएसबिल्ड की सीमाओं से निराश हूं, और सामान जो काम करने वाला है, लेकिन नहीं (कम से कम प्रत्येक संदर्भ में नहीं), मुझे कभी भी बहुत कुछ चाहिए एमएसबिल्ड के साथ कुछ भी करें, मैं सी # में कस्टम बिल्ड कार्य बनाता हूं।

यदि कोई अन्य सुझाव काम नहीं कर रहा है, तो आप निश्चित रूप से ऐसा कर सकते हैं।

+2

का उपयोग करता है मुझे आपका दर्द महसूस होता है - हालांकि मेरा कस्टम कार्य एक अजगर लिपि है। – NetworkBurger

+0

समझने योग्य लेकिन मुझे लगता है कि एमएसबिल्ड आउटपुट/त्रुटि कंसोल में पाइप जानकारी के लिए संरचित तरीके से अधिक है। हालांकि मुझे निश्चित रूप से लगता है कि यह बैच फाइलों के ऊपर एक कदम है –

+1

मुझे पता है कि यह समस्या तब से कम हो गई थी जब आपके पास यह समस्या थी, लेकिन मैंने बस वही किया था और रूट तत्व में ToolsVersion = "12.0" को सेट करके इसे हल किया था ..उम्मीद है कि यह कुछ मदद की है :) –

1

आप आउटपुट को फ़ाइल में पाइप करने के लिए पाइप कर सकते हैं, और इसे वापस पढ़ सकते हैं।

echo test output > somefile.txt 
109

सभी को अच्छी खबर! अब आप .NET 4.5 के रूप में <Exec> से आउटपुट कैप्चर कर सकते हैं।

इस तरह

:

<Exec ... ConsoleToMSBuild="true"> 
    <Output TaskParameter="ConsoleOutput" PropertyName="OutputOfExec" /> 
</Exec> 
सीधे शब्दों में

:

  • एक <Output> टैग

अंत में ConsoleOutput पैरामीटर का उपयोग कर अपने <Exec> टैग करने के लिए ConsoleToMsBuild="true" जोड़े

  • उत्पादन कैद!

    Documentation here

  • +0

    क्या आप इस पर प्रलेखन से लिंक कर सकते हैं? –

    +2

    ओह, या। यह यहां है: http://msdn.microsoft.com/en-us/library/ms124731(v=VS.110).aspx –

    +5

    मुझे 'विशेषता घोषित नहीं किया गया' त्रुटि मिलती है ... –