सी # में मैक्रोज़ की अवधारणा नहीं है; हालांकि, आप संकलित करने से पहले स्रोत को कुशल बनाने के लिए अपनी बिल्ड स्क्रिप्ट (csproj/NANT/etc) में अन्य टूल का उपयोग कर सकते हैं। मैं इसका उपयोग करता हूं, उदाहरण के लिए, वर्तमान एसवीएन संशोधन में संशोधन संख्या सेट करने के लिए।
एक सस्ता विकल्प एक पूर्व निर्माण घटना (आप वी.एस. संवाद परियोजना गुण के माध्यम से यह कर सकते हैं) है: अनिवार्य रूप से एक बल्ला फ़ाइल है कि निर्माण से पहले चलाता है; फिर आप जो भी बदलाव चाहते हैं उसे स्क्रिप्ट कर सकते हैं। एक और परिष्कृत विकल्प निर्माण कार्य है।
उदाहरण के लिए, उपयोगिता लाइब्रेरी here में Time
कार्य और FileUpdate
कार्य शामिल है; आपको (सिद्धांत में) दोनों को एक साथ जोड़ना संभव है जो आपको चाहिए।
व्यक्तिगत रूप से, मैं समय के बजाय [AssemblyVersion]
विवरण का उपयोग करता हूं - यदि आप इसे अपने स्रोत-नियंत्रण प्रणाली से लिंक करते हैं, तो यह अपमानजनक संस्करण को ढूंढना बहुत आसान बनाता है; तो मेरे SVN संस्करण के लिए, मैं तो (अपने निर्माण proj में) का उपयोग करें:
<!-- See http://msbuildtasks.tigris.org -->
<Import Project="$(MSBuildExtensionsPath)\MSBuildCommunityTasks\MSBuild.Community.Tasks.Targets"/>
...
<SvnInfo LocalPath=".">
<Output TaskParameter="Revision" PropertyName="BuildRev" />
</SvnInfo>
...
<FileUpdate Files="Path\To\My\AssemblyInfo.cs"
Regex='(\[\s*assembly:\s*AssemblyVersion\(\s*"[^\.]+\.[^\.]+)\.([^\.]+)(\.)([^\.]+)("\)\s*\])'
ReplacementText='$1.$2.$(BuildRev)$5' />
<FileUpdate Files="Path\To\My\AssemblyInfo.cs"
Regex='(\[\s*assembly:\s*AssemblyFileVersion\(\s*"[^\.]+\.[^\.]+)\.([^\.]+)(\.)([^\.]+)("\)\s*\])'
ReplacementText='$1.$2.$(BuildRev)$5' />
और अब मेरी विधानसभा संस्करण सही है, तो फ़ाइल संस्करण है कि ओएस द्वारा रिपोर्ट हो जाता है भी शामिल है।
स्रोत
2009-01-07 07:53:54
मैं कुछ करने के समान में यह करने के लिए एमएसबिल्ड माइक्रोसॉफ्ट एसडीसी कार्यों का उपयोग कर: http://www.codeplex.com/sdctasks –