2011-01-23 16 views
32

से लॉग में परिवर्तनीय मान को आउटपुट कैसे करें MSBuild से लॉग में परिवर्तनीय मान आउटपुट कैसे करें?MSBuild

मैं एक एमएसबिल्ड स्क्रिप्ट डीबग करने की कोशिश कर रहा हूं और लॉग के चर चर को आउटपुट करना चाहता हूं।

+0

मैं इस सवाल मदद मिल सकती है आपकी समस्या का समाधान लगता है। http://stackoverflow.com/questions/2968077/trouble-with-outputting-msbuild-variables – awright18

उत्तर

55

आप वास्तव में वीएस -2010 के साथ debug msbuild स्क्रिप्ट्स कर सकते हैं। इसके लिए कुछ हैकिंग की आवश्यकता है और यह आधिकारिक रूप से समर्थित नहीं है लेकिन यह एक विकल्प है।

अन्यथा Message कार्य का उपयोग करें। Properties, Items और Item Metadata (जिसे batching भी कहा जाता है) के संदर्भ के लिए सामान्य नियम लागू होते हैं।

यह उदाहरण:

<Project DefaultTargets="Build" 
     xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 
    <ItemGroup> 
    <TestItem Include="test1" /> 
    <TestItem Include="test2" /> 
    <TestItem Include="test3" /> 
    </ItemGroup> 
    <PropertyGroup> 
    <TestProperty>Property Value</TestProperty> 
    </PropertyGroup> 

    <Target Name="TestMessage" AfterTargets="Build" > 
    <!--Use $(Property Name) to reference a property--> 
    <Message Text="$(TestProperty)" Importance="high"/> 
    <!--Use @(Item Name) to output a semi-colon separated list of items on one line--> 
    <Message Text="@(TestItem)" Importance="high"/> 
    <!--Use %(Item Name.Metadata Property Name) to call the Message task once for each item.--> 
    <!--This will output each item on a separate line--> 
    <Message Text="%(TestItem.Identity)" Importance="high"/> 
    </Target> 
</Project> 

इस उत्पादन का उत्पादन होगा:

Property Value 
test1;test2;test3 
test1 
test2 
test3 
+3

अपना उत्तर उपयोग करने में आसान बनाने के लिए, प्रत्येक संदेश तत्वों में महत्व = "उच्च" विशेषता जोड़ने पर विचार करें। इस प्रकार संदेशों को डिफ़ॉल्ट रूप से दिखाया जाएगा जब आप एमएसबिल्ड को कॉल करते हैं या यदि आप वीएस –

+3

में बिल्ड आउटपुट देखते हैं, तो यह भी जल्दी है कि आप इसे मौजूदा सीस्पोज़ में परिभाषित लक्ष्य जोड़ना चाहें और पहले लक्ष्य को जोड़ दें = लक्ष्य के लिए "बनाएँ"। फिर बस वीएस के साथ बनाएँ और निर्माण आउटपुट में देखो। –

+2

आउटपुट कहां दिखाएगा? विजुअल स्टूडियो की आउटपुट विंडो में (और "आउटपुट दिखाएं: बिल्ड करें")? इसके अलावा, मैं इसे किस फाइल में डाल रहा हूं? मैंने बस इसे 'सी: \ प्रोग्राम फ़ाइलें (x86) \ माइक्रोसॉफ्ट विजुअल स्टूडियो \ 2017 \ एंटरप्राइज़ \ MSBuild \ 15.0 \ Bin \ Microsoft.Common.CurrentVersion.targets' फ़ाइल में जोड़ने का प्रयास किया, लेकिन मुझे कुछ भी दिखाई नहीं दे रहा है उत्पादन। – jbyrd

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