2009-07-02 14 views
8

मेरे पास एक फ़ाइल है जिसे मैंने PowerShell का उपयोग करके सेट किया है जिसमें मेरे निर्माण का संस्करण संख्या शामिल है। मुझे इसे MSBuild के भीतर प्राप्त करने की आवश्यकता है ताकि मैं अपनी बिल्ड स्क्रिप्ट के भीतर इस पर कार्य कर सकूं। यह काफी आसान लगता है; मैं सिर्फ फाइल की सामग्री लेना चाहता हूं और उस मूल्य पर एक संपत्ति सेट करना चाहता हूं।MSBuild का उपयोग करके, मैं एक फ़ाइल की सामग्री में एक संपत्ति कैसे सेट करूं?

मैंने सोचा कि शायद एक एक्सेक कार्य कर रहा है, मेरी फाइल पर "अधिक" कर रहा है, और मानक आउट कैप्चर करने से चाल चलती है, लेकिन मुझे यह काम करने के लिए प्रतीत नहीं होता है। ऐसा प्रतीत होता है कि दूसरों को स्टडआउट और एमएसबिल्ड के साथ भी समस्याएं थीं। यहाँ मैं क्या करने की कोशिश की है:

<Exec Command="more $(BuildDirectory)\version.txt" Outputs="stdout"> 
    <Output TaskParameter="Outputs" ItemName="BuildNumber" /> 
</Exec> 

उत्तर

8

ReadLinesFromFile कार्य आप क्या चाहते है

<ReadLinesFromFile File="Version.Txt"> 
    <Output TaskParameter="Lines" Item="BuildNumber"/> 
</ReadLinesFromFile> 

ने कहा कि, एक और तरीका है कि आपका प्रश्न का तात्पर्य क्या करना आप एक xml फ़ाइल में संख्या की जानकारी का निर्माण स्टोर करने के लिए है एक MSBuild स्कीमा

कुछ

तरह
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 
<PropertyGroup> 
    <BuildNumber>10</BuildNumber> 
    <RevNumber>5</RevNumber> 
</PropertyGroup> 
</Project> 

और फिर वें आयात के साथ e version.properties फ़ाइल को आपकी मुख्य msbuild फ़ाइल में

+0

धन्यवाद! मुझे बस वह काम नहीं मिला। एफवाईआई, आपके पहले कोड स्निपेट में थोड़ी सी बग है। <आउटपुट TaskParameter = "लाइंस" ITEMNAME = "BuildNumber" /> तब मैं उपयोग कर सकते हैं: यह ITEMNAME बजाय आइटम है आउटपुट "@ (बिल्ड नम्बर)" का उपयोग कर। –

+0

एएके - अब मुझे एक सूची आइटम (@) से एक संपत्ति ($) में बदलना होगा। इस पर कोई सुझाव? –

+0

मुझे लगता है कि मैंने इसे समझ लिया: <आउटपुट कार्यपार्मेटर = "मान" संपत्ति नाम = "BuildNumberValue" />

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