2010-02-27 11 views
5

क्या विजुअल स्टूडियो - वीबी.नेट में बिल्ड इवेंट्स में कंपाइलर स्थिरांक का उपयोग करने के लिए वैसे भी है? (विशेष रूप से में पोस्ट-बिल्ड घटनाओं)निर्माण घटनाओं में कंपाइलर स्थिरांक का उपयोग

परिदृश्य

तो TEST_EDITION=TRUE परिभाषित किया गया है मैं बहुत अगर यह FALSE तो मैं कुछ और चलाएँगे घटना के बाद बिल्ड दौरान एक निष्पादन चलाना चाहते हैं।

इसका उपयोग विभिन्न संस्करणों के लिए विभिन्न इंस्टॉलर बनाने के लिए किया जा सकता है।

पीएस इससे पहले कि कोई पता चलता है: नहीं मैं नहीं चाहता कि nant, MSBuild या कि

+0

का उपयोग करने का प्रयास करने की कोशिश कर छोड़ दिया है, यदि आप जो करने की कोशिश कर रहे हैं उसके बारे में अधिक जानकारी देते हैं तो इससे मदद मिलेगी। –

+0

मैं संकलक स्थिरांक के आधार पर एक सशर्त निर्माण-घटना लिखने की कोशिश कर रहा हूं? क्या यह स्पष्ट नहीं था? -लेकिन मैंने इसे साफ़ करने के लिए एक उदाहरण जोड़ा। –

उत्तर

11

हां, $ (DefineConstants) मैक्रो उपलब्ध है और एक बिल्ड इवेंट में परीक्षण किया जा सकता है। उदाहरण के लिए, परियोजना + संकलित, उन्नत संकलित विकल्प, कस्टम स्थिरांक = टेस्ट इस तरह का परीक्षण किया जा सकता है:

if /i "$(DefineConstants)" NEQ "TEST" goto skiptest 
echo Setting up for test environment 
:skiptest 

टेस्ट = TRUE या यौगिक स्थिरांक की तरह अधिक जटिल कस्टम स्थिरांक अलग ढंग से पार्स किया जा सकता की जरूरत है। माना जाता है कि मैंने जल्दी से डरावनी FOR command.

+0

भयानक धन्यवाद दिया है, धन्यवाद। –

0

विजुअल बेसिक के सिंटैक्स के बारे में सुनिश्चित नहीं हैं की तरह कुछ का उपयोग करना चाहते हैं, लेकिन निम्नलिखित चाल सी द्वारा ++ इस्तेमाल किया जा सकता:

: फ़ाइल global_inc.bat के रूप में पढ़ता
SET PARAMETER=TRUE 

यह बैच स्क्रिप्ट द्वारा इनपुट किया जा सकता है जिसे पोस्ट-बिल्ड इवेंट में बुलाया गया था। सी ++ कोड फ़ाइल का उपयोग किया इस प्रकार है:

#define PARAMETER const int parameter 
#define SET /**/ 
#include "global_inc.bat" 
; 
#undef PARAMETER 

postbuild कदम इस तरह देखा:

call global_inc.bat 
if "%PARAMETER%" == "TRUE" echo True 

एक और संभावना को prebuild कदम के लिए किया जाएगा एक .vb फाइल उत्पन्न, पोस्टबिल्ड चरण में उपयोग की जाने वाली कॉन्फ़िगरेशन फ़ाइल के साथ-साथ।

+0

मुझे लगता है कि यह इस सीमा के लिए आपका कामकाज है, क्योंकि मुझे वास्तव में कुछ भी संकलित करने की आवश्यकता नहीं है। मैं इसे केवल एक निष्पादन योग्य चलाने के लिए करना चाहता हूं जब पोस्ट-बिल्ड इवेंट के दौरान निरंतर सत्य होता है। –

+0

ने उदाहरण के करीब होने के लिए उदाहरण बदल दिया। nobugz द्वारा जवाब मुझे एक बेहतर समाधान लगता है हालांकि – Vlad

0

क्या आपने एमएसबिल्ड पोस्टवेन्ट्स की कोशिश की है? यह एक .csproj के एक उद्धरण है ... लेकिन एक ही फाइल को

<!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
     Other similar extension points exist, see Microsoft.Common.targets. 
    <Target Name="BeforeBuild"> 
    </Target> 
    <Target Name="AfterBuild"> 
    </Target> 
    --> 
    <Target Name="BeforeBuild"> 
    </Target> 
    <Target Name="AfterBuild"> 
    <Copy SourceFiles="$(OutputPath)$(AssemblyName).dll" DestinationFolder="$(BinariesFolder)" ContinueOnError="true" /> 
    </Target> 

vbproj को आप TaskExec लक्ष्य है, जो आप एक बैच फ़ाइल या एक निष्पादन को चलाने के लिए अनुमति देता है के साथ उपयोग कर सकते हैं लागू होता है।

<Target Name="DoSomething"> 
    <Exec Command="D:\DoSomething.exe"/> 
</Target> 
+0

मैं msbuild का उपयोग नहीं करना चाहता क्योंकि यह हमारे वर्तमान बिल्ड सर्वर सेटअप के लिए उपयुक्त नहीं है। –

+0

इसके अलावा मुझे यह भी यकीन नहीं है कि एमएसबिल्ड इसका समर्थन करता है या नहीं। –

+0

एमएसबिल्ड के लिए एक एक्साकटास्क है जो आपको बैच फ़ाइल या निष्पादन योग्य चलाने की अनुमति देता है ...मैंने अपना जवाब –

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