2010-01-22 18 views
10

मेरी एमएसबिल्ड स्क्रिप्ट में मैं ज़िप फ़ाइल नाम में वर्ष/माह/दिन के साथ एक ज़िप फ़ाइल बना रहा हूं, लेकिन महीने और दिन हमेशा किसी भी अग्रणी शून्य के साथ लिखे जाते हैं।msbuild स्क्रिप्ट में दिनांक प्रारूप?

क्या मेरे ज़िप फ़ाइल नाम में अग्रणी शून्य जोड़ने का कोई तरीका है?

<Time> 
    <Output TaskParameter="Year" PropertyName="Year" /> 
    <Output TaskParameter="Month" PropertyName="Month" /> 
    <Output TaskParameter="Day" PropertyName="Day" /> 
</Time> 

<PropertyGroup> 
    <ZipOutDir>C:\output</ZipOutDir> 
    <ZipFileName>Application_$(Year)$(Month)$(Day).zip</ZipFileName> 
</PropertyGroup> 

और परिणाम है: (जनवरी के लिए कोई आगे शून्य के साथ, जैसा कि आप देख सकते हैं) 'Application_2010122.zip'

उत्तर

4

आप MSBuild विस्तार इस्तेमाल कर सकते हैं पैक एक ला:

http://www.msbuildextensionpack.com/help/3.5.3.0/html/9c5401ed-6f55-089e-3918-2476c186ca66.htm

या समुदाय कार्यों से समय काम करने के लिए प्रारूप पैरामीटर का उपयोग [जो आप दिखाई देते हैं का उपयोग करने की]

MSBuild MSBuildCommunityTasks Task Time

+0

धन्यवाद ... मुझे पहले से ही बाद का लिंक मिला और इसका इस्तेमाल किया। – Goran

+0

अच्छी चीजें। बीटीडब्लू हमेशा इस बात का जिक्र करने के लिए एक अच्छा विचार है कि आप किस कार्य libs का उपयोग कर रहे हैं/इस सवाल के सवाल पूछते समय उपयोग करने के लिए खुले हैं। –

+0

यह अच्छा होगा अगर इस स्वीकृत उत्तर में वास्तव में उस प्रश्न का उत्तर दिया गया हो। यही है, समुदाय कार्यों से समय कार्य में प्रारूप पैरामीटर का उपयोग कैसे करते हैं, क्या कोई तारीख को प्रारूपित करता है ताकि महीनों में 0s अग्रणी हो? – ssmith

0

ऐसा इसलिए है क्योंकि एमएसबिल्ड पूरी तरह तारों के साथ काम करता है। आपको या तो मौजूदा कार्यों को संशोधित करना होगा ताकि सभी गुण एस int s (या जो भी पूर्णांक मूल्य लौटते हैं) के बदले वापस आएंगे, या एक अलग कार्य बनाएं जो आपकी आवश्यकताओं के अनुसार वर्ष, महीने और दिन प्रारूपित करेगा।

+0

वहां कार्य की सीमाओं को देखते हुए, बस यह इंगित करना चाहता था कि आपकी टिप्पणी एक ऐसा कार्य ढूंढने के बजाय कार्य लिखने का सुझाव देती है जो पहले से ही करता है - मुझे यकीन है कि आपने इसका इरादा नहीं किया है। (और मैं इस तरह के छोटे स्वरूपण हैक्स करने के लिए पावरशेल कार्य का उपयोग करता हूं यदि मैं आम libs में से एक के लिए पहले से ही कोई कार्य नहीं था) –

+0

@ रूबेन: ज़रूर! मुझे बस MSBuild के लिए कोई स्ट्रिंग स्वरूपण कार्य नहीं मिला। अन्यथा मैं निश्चित रूप से उनमें से एक का उपयोग करने का सुझाव दिया होगा। –

+0

दिलचस्प है कि वास्तव में कोई नहीं है ... मुझे यह जानने में दिलचस्पी होगी कि क्या अधिकांश लोग पावरशेल कार्य का उपयोग करते हैं यदि इस तरह से कुछ हुआ है? (सबसे अच्छा exanmple मैं सोच सकता हूं कि vdproj फ़ाइलों को उनके अंदर पूंजी अक्षरों के साथ guids की आवश्यकता है और मैंने एक ToUpper करने के लिए पीएस का सहारा लिया क्योंकि मुझे ऐसा करने के लिए कोई कार्य नहीं मिला (या एक कैप्चरलाइज्ड गइड का उत्पादन) –

25

In msbuild 4 you can now

$([Namespace.Type]::Method(..parameters…)) 
$([Namespace.Type]::Property) 
$([Namespace.Type]::set_Property(value)) 

तो मैं

$([System.DateTime]::Now.ToString(`yyyy.MMdd`)) 

प्रारूप आसपास के लोगों टिक उपयोग कर रहा हूँ बैकटिक नहीं '

-1

हैं यहाँ एक सस्ता और गंदा तरीका एक अग्रणी शून्य

जोड़ने के लिए है
$([System.UInt16]::Parse($(Month)).ToString('00')) 
संबंधित मुद्दे