2011-12-09 14 views
10

में एक कमांड लाइन तर्क मैं के लिए सभी विधानसभाओं इस तरह एक MSBuild आदेश तर्क के रूप में निर्माण के दौरान उत्पन्न होने के लिए संस्करण संख्या निर्दिष्ट करने के लिए सक्षम होने के लिए चाहते हैं के रूप में विधानसभा संस्करण संख्या निर्दिष्ट करें AssemblyInfoTask पर देखा है लेकिन यह मुझे इस मामले में एक अच्छा समाधान की तरह प्रतीत नहीं होता है।MSBuild

+0

असेंबलीइन्फो कार्य आपके लिए उपयुक्त क्यों नहीं है? इसका उद्देश्य * संस्करण * संस्करण संख्या (असेंबली वर्जन) विशेषता सहित असेंबली जानकारी सेट करना है। – DaveE

+0

कुछ बाहरी नियमों के आधार पर संस्करण संख्या को स्थापित करने की आवश्यकता है, जो कि कुछ नियमों पर नहीं हैं जिन्हें AssemblyInfoTask का उपयोग करके अंतर्निहित किया जा सकता है। असल में मैं कमांड लाइन तर्क संस्करण संख्या बनना चाहता हूं। – user379429

उत्तर

10

मैं असेंबलीइन्फो कार्य का उपयोग करता हूं जैसा कि आप हर समय अपनी टिप्पणी में वर्णन करते हैं।

<!-- update standard assembly attribute in all projects --> 
    <Target Name="BeforeBuild" > 
    <Message Text="Updating AssemblyInfo to Version $(VersionNumber)"></Message> 
    <Message Text="Writing to AssemblyInfo files in $(SolutionRoot)"></Message> 
    <AssemblyInfo AssemblyInfoFiles="@(AssemblyInfoFiles)" 
        AssemblyCopyright="$(AssemblyCopyright)" 
        AssemblyVersion="$(VersionNumber)" 
        AssemblyFileVersion="$(VersionNumber)" 
        > 
    </AssemblyInfo> 
    </Target> 

VersionNumber मूल्य MSBuild परियोजना फ़ाइल बाहर से पारित हो जाता है बिल्कुल के रूप में आप का वर्णन:

MSBuild <project_file> /p:VersionNumber=<value>;... 

हम AssemblyInfo.cs सुनिश्चित करने के लिए BeforeBuild लक्ष्य का उपयोग फ़ाइलों को सभी निर्माण शुरू होने से पहले इस पर काम करने के । क्या यह आप नहीं चाहते हैं?

+1

जब मैं इसे आज़माता हूं तो मुझे एक त्रुटि मिलती है जो कहता है कि AssemblyInfo कार्य नहीं मिला है। मैंने "असेंबलीइन्फो टास्क" के लिए गुगल किया और एमएसबिल्ड एक्सटेंशन के रूप में उस नाम से कुछ स्थापित किया, लेकिन यह काम नहीं किया। क्या आप उस व्यक्ति को लिंक प्रदान कर सकते हैं जिसका आप उपयोग कर रहे हैं? – CoderDennis

+0

@ डेनिसपाल्मर, हम [MSBuild एक्सटेंशन पैक] (http://msbuildextensionpack.codeplex.com/) से कार्य का उपयोग करते हैं। एक संपत्ति समूह तत्व में ... कार्य फ़ाइल शामिल करें और आपको जाने के लिए अच्छा होना चाहिए। – DaveE

+0

उस एक्सटेंशन पैक को स्थापित करने में मदद नहीं मिली, मुझे अभी भी त्रुटि है इसलिए मैंने यहां SO प्रश्न खोला है http://stackoverflow.com/questions/13090933/assemblyinfo-not-found-and-msbuild-extension-pack-installed –

7

मुझे पता है कि यह एक पुराना सवाल है लेकिन Google मुझे शीर्ष परिणाम के रूप में यहां ले जाता है।

मैंने this में एक साधारण समाधान का पालन किया। विस्तार पैक की कोई ज़रूरत नहीं है।

msbuild.exe abc.sln /p:Configuration=Release;VersionAssembly=1.2.3.4 

आशा इस मदद करता है:

मूल रूप से है कि आप क्या करने की जरूरत है एक "BuildCommon.targets" फ़ाइलें जोड़ सकते हैं और संस्करण संख्या की तरह MSBuild में निर्दिष्ट किया है उसके अनुसार अपनी csproj फ़ाइल को संशोधित है।

+0

क्या यह असेंबली वर्जन होना चाहिए? –

+0

@ फ़्रेजिम: यह इस बात पर निर्भर करता है कि आप BuildCommon.targets फ़ाइल में उस कमांड स्विच का नाम कैसे देते हैं। यह पूरी तरह से आप पर निर्भर है :) – Jach