5

उदाहरण के लिए कहें मेरे पास "माइक्रोनफिग" नामक कॉन्फ़िगरेशन वाला विजुअल स्टूडियो प्रोजेक्ट है और मेरे पास संकलन प्रतीक MY_CONFIG_SYMBOL परिभाषित है।वीएस निर्माण कार्यक्रमों में सशर्त संकलन प्रतीकों का उपयोग करना संभव है?

क्या कोई मैक्रो या कमांड देखने के लिए है कि क्या MY_CONFIG_SYMBOL पूर्व/पोस्ट बिल्ड इवेंट में परिभाषित किया गया है? #if MY_CONFIG_SYMBOL की तरह कुछ, लेकिन निर्माण के आयोजन के लिए?

+1

कोई जवाब ढूंढने के साथ कोई भाग्य? – Thracx

+0

@Thracx मुझे अंत में एक जवाब मिला। निचे देखो। –

उत्तर

2

मुझे अंततः एक उत्तर मिला। पूरी तरह से निम्नलिखित काम करता है:

if "$(DefineConstants.Contains('DEBUG'))" == "True" <command> 

इस बिल्ड में परिभाषित किसी भी स्थिरांक के लिए काम करता है, लेकिन ध्यान दें कि लगातार केस-संवेदी है ('डीबग' = 'डिबग'!)।

0

यदि आपका मतलब निर्माण प्रकार (डीबग या रिलीज) के आधार पर सशर्त बनाता है तो हाँ। इन धागों की जाँच करें:

Conditional Post-build event in Visual Studio 2008

How to run Visual Studio post-build events for debug build only

+3

नहीं, मेरा मतलब है डीबग या रिलीज में परिभाषित सशर्त संकलन प्रतीकों का उपयोग करना। डीबग कॉन्फ़िगरेशन के लिए मुख्य सशर्त संकलन प्रतीक, जिसे आमतौर पर डिफ़ॉल्ट रूप से परिभाषित किया जाता है, 'DEBUG' है। आप इसे कोड में उपयोग कर सकते हैं, लेकिन क्या आप इसे प्री या पोस्ट बिल्ड इवेंट में इस्तेमाल कर सकते हैं –

0

खैर, यह एक समाधान नहीं है, बस कुछ प्रयोगों साझा करते हुए राज्य अग्रिम करने के लिए कोशिश कर रहा।

<#@ include file="debug.incl" #>` 

some text1 
<# if (xdebug) { #> 
    foo = bas; 
<# } #> 
more text 

कहाँ debug.incl शामिल हैं:: एक तरीके के रूप चालू और बंद डिबग स्विचिंग मजबूत करने के लिए (मैं अभी तक सशर्त संकलन प्रतीकों का परीक्षण करने के लिए एक रास्ता खोजने के लिए है।)

यह

<# 
bool xdebug = true; 
#> 

पहली फ़ाइल में सशर्त (अगर) xdebug के मान को देखने में सक्षम है, इसलिए debug.incl में xdebug की सेटिंग के आधार पर आउटपुट बदल दिया गया है।

अफसोस की बात है कि, हालांकि, इसमें स्पष्ट रूप से शामिल होने के बावजूद आउटपुट फ़ाइलों को debug.incl में परिवर्तनों पर पुनर्निर्मित नहीं किया गया है। और यहां तक ​​कि एक साफ & पुनर्निर्माण उत्पादन को ट्रिगर नहीं करता है, इसलिए कुछ अलग निर्माण निर्माण की आवश्यकता है ...

(मैंने debug.incl के बजाय debug.tt को कोई फायदा नहीं हुआ, .incl पर स्विच करें ताकि debug.cs debug.tt द्वारा बनाया गया था नहीं।)


यह बहुत अच्छी तरह से काम नहीं किया के रूप में यह सशर्त संकलन प्रतीकों को नहीं देखती है, हालांकि टेम्पलेट डिबग विशेषता पर स्विच वास्तव में है!

<# 
#if DEBUG 
bool xdebug = true; 
#else 
bool xdebug = false; 
#endif 
#> 

some text1 
<# if (xdebug) { #> 
    foo = bas; 
<# } #> 
more text 

<#@ template debug="true" #> बनाम <# template debug=false #> के साथ क्रमश: नहीं सशर्त उत्पादन मिलता है या,।

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