2009-07-07 4 views
24

विजुअल स्टूडियो 2008 के साथ सी # एप्लिकेशन बनाने के दौरान, प्रति कॉन्फ़िगरेशन के साथ एक अलग आउटपुट फ़ाइल नाम सेट करना संभव है?वीएस -2008 - डीबग/रिलीज कॉन्फ़िगरेशन के लिए एक अलग फ़ाइल नाम आउटपुट

e.g. 

MyApp_Debug.exe 
MyApp_Release.exe 

मैंने वर्तमान कॉन्फ़िगरेशन को जोड़कर फ़ाइल का नाम बदलने के लिए एक पोस्ट-बिल्ड चरण की कोशिश की, लेकिन यह एक बेवकूफ दृष्टिकोण लगता है। इसके अलावा इसका मतलब यह था कि डीबगिंग शुरू करने के लिए F5 दबाते समय विजुअल स्टूडियो अब फ़ाइल नहीं ढूंढ सका।

+2

यहां देखें: http://stackoverflow.com/questions/893003/change-assembly-name-based-on-configuration-visual-studio-2005/893238#893238 –

उत्तर

33

आप इसे अपनी परियोजना फ़ाइल को हाथ से संपादित करके प्राप्त कर सकते हैं। <AssemblyName> नोड को ढूंढें और उसके एक सशर्त विशेषता जोड़ें:

<AssemblyName Condition="'$(Configuration)'=='Debug'">MyApp_Debug.exe</AssemblyName> 
<AssemblyName Condition="'$(Configuration)'=='Release'">MyApp_Release.exe</AssemblyName> 

आप रिलीज़ संस्करण के लिए एक और सशर्त विशेषता जोड़ने के लिए भी यह नकल करना होगा।

हालांकि यह संभव है, इससे समस्याएं हो सकती हैं। एक AssemblyConfiguration विशेषता है जिसे आपकी असेंबली पर लागू किया जा सकता है। AssemblyInfo.cs में, डाल:

#if DEBUG 
[assembly: AssemblyConfiguration("Debug")] 
#else 
[assembly: AssemblyConfiguration("Release")] 
#endif 

यह आपके संकलित विधानसभा में कोई प्रॉपर्टी जोड़ते होगा कि आप जो विन्यास आपके आवेदन का उपयोग कर बनाया गया था निर्माण बता देंगे।

+0

उत्सुक ... विजुअल स्टूडियो पहले से नहीं है असेंबली कॉन्फिगरेशन जोड़ें तो क्या आप एक बिल्ड करते हैं? – cecilphillip

+0

मुझे यह काम करने के लिए मैन्युअल असेंबली कॉन्फ़िगरेशन लाइनों को जोड़ने की ज़रूरत नहीं थी। AssemblyInfo.cs '[असेंबली: असेंबली कॉन्फ़िगरेशन (" ")] का उपयोग करता है, हालांकि मुझे विधानसभा नाम पर सीधे शर्तों को रखने के बजाय मौजूदा संपत्ति समूहों में 'असेंबलीनाम' बयान को स्थानांतरित करना पड़ा था। –

+0

@ डेनिस एसकिडमोर: यह मेरे मूल उत्तर से स्पष्ट नहीं है, लेकिन वे एक ही परिणाम प्राप्त करने के लिए दो विकल्प हैं। निजी तौर पर, मैं कोड-केवल ऐपोरच पसंद करता हूं। – adrianbanks

-1

मुझे यकीन है कि, मेरे अनुभव में डीबग/रिलीज कॉन्फ़िगरेशन के लिए अलग-अलग फ़ाइल नाम होने का अनुभव एक बुरा विचार है क्योंकि यह सभी प्रकार की समस्याओं का कारण बन सकता है (इस मुद्दे की तरह वीएस के नाम पर नाम बदलने की कोशिश की जाती है एप्लिकेशन)

क्यों बस का संकेत नहीं है या नहीं, विधानसभा में अपने डिबग/रिलीज विशेषताओं (टिप्पणी में उदाहरण के लिए)

10

adrianbanks उल्लेख किया है, तो आप अपने .csproj फ़ाइल हाथ से यह पूरा करने के संपादित कर सकते हैं।

मैं, फिर भी की सरल रूप की सिफारिश करेंगे:

<AssemblyName>MyApp_$(Configuration).exe</AssemblyName> 

आप कभी भी इस परियोजना हालांकि, इस परिवर्तन बहुत संभावना खो जाएगा के गुणों को संपादित करते हैं। ऐसा कुछ है जो आपको मैन्युअल रूप से शीर्ष पर रहना होगा, क्योंकि यह एक समर्थित सेटअप नहीं होने वाला है।

अपनी प्रोजेक्ट परिभाषा को मैन्युअल रूप से संपादित करने के लिए, विजुअल स्टूडियो में प्रोजेक्ट पर राइट क्लिक करें, और "अनलोड" का चयन करें, फिर अनलोडेड प्रोजेक्ट पर राइट क्लिक करें और "संपादित करें" का चयन करें और यह आपके लिए एक्सएमएल परिभाषा खुल जाएगा।

+1

यह सभी संभावित समाधानों में समस्या है। विजुअल स्टूडियो आपको एमएसबिल्ड की पूर्ण क्षमताओं को शामिल करने के लिए प्रोजेक्ट फ़ाइल को संपादित करने की अनुमति नहीं देता है। आपके द्वारा किए गए किसी भी बदलाव को विजुअल स्टूडियो के बाहर प्रबंधित करना होगा। कम से कम इस बदलाव के साथ आप विजुअल स्टूडियो में इसका प्रभाव देख सकते हैं। – adrianbanks

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