के आधार पर exe का नाम बदलें क्या आप एक विशिष्ट सशर्त संकलन प्रतीक सेट किया गया है, इस पर निर्भर करते हुए एक exe फ़ाइल के एक अलग नाम को आउटपुट करने के लिए विजुअल स्टूडियो को बता सकते हैं?सशर्त संकलन प्रतीक
उत्तर
फ़्रेड्रिक द्वारा सुझाए गए असेंबली नाम टैग की स्थिति को परिभाषित करने के बाद से विजुअल स्टूडियो क्रैकी बनाते हैं, तो आप बाद में csproj फ़ाइल में असेंबली नाम बदल सकते हैं। Choose element का उपयोग करना एक कथन की तरह है, इसलिए यदि कोई शर्त पूरी हो जाती है, तो नीचे दिखाया गया है, तो एक नाम जोड़ा जा सकता है।
एक शर्त विशेषता में उदाहरण DefineConstants
के लिए से बाहर सबस्ट्रिंग हो रही है (MSDN के अनुसार) संभव प्रतीत नहीं होता है के साथ "सादे वेनिला MSBuild", लेकिन एक अपने स्वयं के निर्माण लक्ष्य निर्धारित करने और जब एक /p:Tag=value
साथ संकलन एक संपत्ति सेट कर सकते हैं (MSBuild command line reference)
...
<Tag>true</Tag>
</PropertyGroup>
<Choose>
<When Condition=" '$(Tag)' == 'true' ">
<PropertyGroup>
<AssemblyName>$(AssemblyName).TagDefined</AssemblyName>
</PropertyGroup>
</When>
</Choose>
<ItemGroup>
...
आप एक पाठ संपादक में .csproj फ़ाइल लोड हैं, तो आप AssemblyName
संपत्ति को नियंत्रित कर सकते हैं:
<AssemblyName Condition="'$(Configuration)' == 'Debug'">WindowsFormsApplication9.Debug</AssemblyName>
<AssemblyName Condition="'$(Configuration)' != 'Debug'">WindowsFormsApplication9</AssemblyName>
नोट यद्यपि कि यह केवल फ़ाइल नाम में परिवर्तन नहीं होता है, लेकिन विधानसभा, नाम जो यदि आपके पास असेंबली का संदर्भ देने वाला अन्य कोड है तो इसका अर्थ हो सकता है।
मैंने कभी यह नहीं किया, इसलिए मैं वास्तव में यह नहीं कह सकता कि विचार कितना अच्छा या बुरा है।
आप csproj फ़ाइल को संपादित कर सकते हैं, जो केवल एक MSBuild फ़ाइल है जिसमें 'कार्य' शामिल है। csproj फ़ाइल में एक सेक्शन है जिसे 'आफ्टरबिल्ड' कहा जाता है।
शायद, आप वहां एक आदेश जोड़ सकते हैं जो आपकी पसंद के फ़ाइल नाम पर आपकी exe फ़ाइल का नाम बदलता है।
(ऑफकोर्स, आपको उस खंड को अपूर्ण करना होगा)।
शायद कुछ इस तरह:
<Target Name="AfterBuild">
<Copy SourceFiles="" DestinationFiles="" Condition="" />
<Delete Files="" Condition="" />
</Target>
मैं इसे बाहर आगे काम नहीं किया है, लेकिन इतना है कि आप देख सकते हैं कि सशर्त प्रतीक या परिभाषित नहीं है आप, स्थिति विशेषता पूरा करना चाहिए।
इसे आजमाया नहीं गया, लेकिन फिर भी दुर्भाग्यवश एक मौजूदा संकलन को ओवरराइट कर देगा। * शायद मैं पहले से हील्ड में प्रवेश कर सकता हूं और मौजूदा एप्लिकेशन की प्रतिलिपि बना सकता हूं *। यदि मैं csproj फ़ाइल में 'DefineConstants' टैग में दर्ज कस्टम सशर्त प्रतीक है तो मैं शर्त कैसे दर्ज करूं? – Patrick
यह मेरे लिए काम नहीं करता है। – Elmue
यहां कोई भी जवाब मेरे लिए काम नहीं करता है।
वे या तो त्रुटियां उत्पन्न करते हैं या कुछ भी नहीं करते हैं।
यहां मेरा समाधान है जो वीएस2005 में काम करता है और मुझे लगता है कि यह नए वीएस संस्करणों में भी काम करेगा। इस तरह फ़ाइल * .csproj संपादित करें:
<PropertyGroup>
<PreBuildEvent>
</PreBuildEvent>
<PostBuildEvent>
if $(PlatformTarget) == x86 move /y "$(TargetPath)" "$(TargetDir)$(ProjectName)_32.exe"
if $(PlatformTarget) == x64 move /y "$(TargetPath)" "$(TargetDir)$(ProjectName)_64.exe"
</PostBuildEvent>
</PropertyGroup>
परिणाम होगा कि एक 32 बिट संकलन एक फ़ाइल ProjectName_32.exe
और एक 64 बिट निर्माण का उत्पादन ProjectName_64.exe
पैदा करता है।
कृपया अजीब वाक्यविन्यास नोट करें। if
स्थिति के आसपास कोई संश्लेषण नहीं होना चाहिए और x86
उद्धरणों में नहीं होना चाहिए।
इस विधि का नुकसान यह है कि अब आप डीबगर में अपना एक्सई शुरू नहीं कर सकते हैं क्योंकि विजुअल स्टूडियो को जेई उत्पन्न नहीं हुआ है।इसे 'कॉपी' कमांड को 'कॉपी' कमांड के साथ बदलकर हल किया जा सकता है लेकिन इस मामले में आपको एक्स को दूसरी निर्देशिका में कॉपी करना होगा क्योंकि निश्चित रूप से आप एक ही निर्देशिका में एक ही फाइल को दो बार नहीं रखना चाहते हैं।
यह सब एक गड़बड़ है। यह वास्तव में अविश्वसनीय है कि आप सीधे प्रोजेक्ट सेटिंग्स में आउटपुट निर्देशिका दर्ज कर सकते हैं लेकिन एक्सई नाम को बदलने के रूप में वास्तव में कुछ बुनियादी करने के लिए आपको ऐसी बेकार लिपि लिखनी होगी जिसमें बदसूरत साइड इफेक्ट्स हैं। माइक्रोसॉफ्ट पर शर्म आती है!
- 1. एक्सएएमएल सशर्त संकलन
- 2. विजुअल स्टूडियो 2008 - सॉल्यूशन के लिए सशर्त संकलन प्रतीक, परियोजना
- 3. सशर्त संकलन (ifndef)
- 4. Xcode - सशर्त संकलन
- 5. सी ++ सशर्त संकलन
- 6. लाटेक्स दस्तावेज़ में सशर्त संकलन
- 7. कॉफीस्क्रिप्ट/UglifyJS में सशर्त संकलन
- 8. फ़्लैश/फ्लेक्स सशर्त संकलन "और"
- 9. संकलन समय प्रत्यावर्तन और सशर्त,
- 10. सामान्य तरीकों का सशर्त संकलन
- 11. पूरे समाधान का निर्माण करें, लेकिन केवल एक परियोजना के लिए वैश्विक सशर्त संकलन प्रतीक जोड़ें
- 12. सशर्त संकलन सी # में ढांचा संस्करण के आधार पर
- 13. चाल संचालन के लिए सशर्त संकलन
- 14. msbuild, सशर्त संकलन प्रतीकों को परिभाषित करना
- 15. सशर्त में मोनाडिक अभिव्यक्तियां - जीएचसी संकलन, कैबल
- 16. सशर्त संकलन प्रतीकों को परिभाषित नहीं किया जा रहा है
- 17. g ++ में संकलन करते समय प्रतीक संदर्भ संदर्भ क्यों हैं?
- 18. बूस्ट प्रकार-लक्षणों का उपयोग कर सशर्त संकलन
- 19. सी # - विजुअल स्टूडियो 2008 सशर्त संकलन में सक्षम है?
- 20. ऑपरेटिंग सिस्टम के आधार पर सी ++ में सशर्त संकलन
- 21. लक्ष्य नामों के आधार पर सशर्त संकलन कैसे करें?
- 22. सशर्त संकलन प्रतीकों का उपयोग टी 4 टेम्पलेट्स
- 23. वीएस निर्माण कार्यक्रमों में सशर्त संकलन प्रतीकों का उपयोग करना संभव है?
- 24. प्रतीक
- 25. ASP.NET - सशर्त Web.config
- 26. सशर्त
- 27. सशर्त
- 28. सशर्त
- 29. सशर्त
- 30. __gmon_start__ प्रतीक क्या है?
मैं अपने स्वयं के प्रतीक, जैसे 'NO_LOG' या कॉन्फ़िगरेशन चयन के बजाय कुछ) के लिए कोई शर्त कैसे दर्ज करूं? – Patrick
@ पैट्रिक: मेरे एमएसबिल्ड कौशल काफी दूर तक फैले नहीं हैं। वे स्थिरांक 'DefineConstants' संपत्ति में जाते हैं, लेकिन उनमें से सभी एक ही संपत्ति मूल्य ('CONST1 = value; CONST2; CONST3') में जाते हैं और दुर्भाग्यवश ऐसा लगता है कि इसमें कोई" शामिल "-ऑपरेटर नहीं है जिसका उपयोग किया जा सकता है 'हालत' विशेषताएँ। –
इस धागे को जांचें: http://social.msdn.microsoft.com/Forums/en-US/msbuild/thread/827eb72a-65fb-426c-862c-6095f71bd4bc –