2009-12-21 25 views
31

विजुअल स्टूडियो (2008) में पोस्ट-बिल्ड इवेंट को एक सी ++ प्रोजेक्ट के लिए मजबूर करना संभव है, भले ही प्रोजेक्ट ऊपर हो -तारीख तक?विजुअल स्टूडियो: रन सी ++ प्रोजेक्ट पोस्ट-बिल्ड इवेंट, भले ही प्रोजेक्ट अद्यतित है

विशेष रूप से, मेरे पास एक प्रोजेक्ट है जो एक COM इन-प्रोसेस सर्वर DLL बनाता है। प्रोजेक्ट में पोस्ट-बिल्ड चरण है जो "regsvr32.exe $ (TargetPath)" चलाता है। यह "पुनर्निर्माण" पर ठीक चलता है, लेकिन केवल "बिल्ड" पर चलता है अगर परियोजना के स्रोत में परिवर्तन किए जाते हैं।

यदि मैं कोई बदलाव किए बिना "बिल्ड" करता हूं, तो विजुअल स्टूडियो बस रिपोर्ट करता है कि परियोजना अद्यतित है और कुछ भी नहीं - पोस्ट-बिल्ड इवेंट नहीं चलाया जाता है। क्या इस तरह की स्थिति में मैं इस कार्यक्रम को चलाने के लिए मजबूर कर सकता हूं? यह आवश्यक है क्योंकि डीएलएल स्वयं अद्यतित है, पंजीकरण जानकारी नहीं हो सकती है।

उत्तर

43

आप कस्टम बिल्ड चरण संपत्ति पृष्ठ को चलाने के लिए बैच फ़ाइल सेट अप करने के लिए उपयोग कर सकते हैं। यह तब चलता है जब आउटपुट सेटिंग में निर्दिष्ट फ़ाइल नहीं मिली है, या पुरानी है। बस वहां मौजूद कुछ गैर-मौजूद फ़ाइल निर्दिष्ट करें, और कस्टम बिल्ड चरण हमेशा चलेंगे। यह तब भी चलाएगा जब आपकी परियोजना अद्यतित है, क्योंकि आउटपुट फ़ाइल कभी नहीं मिली है।

+0

मुझे ** कस्टम बिल्ड चरण ** के लिए कोई ** आउटपुट ** सेटिंग नहीं दिखाई दे रही है। आपको ** आउटपुट ** – bpeikes

+0

कहां मिलते हैं, मैंने आउटपुट फ़ाइलों को हटाने के लिए एक AfterBuild लक्ष्य में Exec का उपयोग करने के लिए इस सामान्य अवधारणा का उपयोग किया, जैसे

+0

ओह, मुझे स्टैक ओवरफ्लो के बिना कैसे पता होना चाहिए ?! यहां, एमएसडीएन पर, बिल्ड चरणों के निष्पादन आदेश और घटनाओं के निर्माण के बारे में कुछ अतिरिक्त जानकारी है: https://msdn.microsoft.com/en-us/library/e85wte0k.aspx मेरे मामले के लिए, मैंने अभी अपना "पोस्ट- "कस्टम बिल्ड स्टेप" पर ईवेंट बनाएं "और" आउटपुट "में एक फ़ाइल नाम निर्दिष्ट करें जो मौजूद नहीं है। यह प्रोजेक्ट अद्यतित होने पर भरोसेमंद कस्टम बिल्ड चरण को निष्पादित करता है। – j00hi

0

पंजीकरण जानकारी .rgs फ़ाइल में जो कुछ भी है, उसके आधार पर निर्धारित की जाती है। अगर वह फ़ाइल बदलती है तो परियोजना बनाई जाएगी। मुझे यकीन नहीं है कि परियोजना को गंदे किए बिना COM पंजीकरण कैसे बदल सकता है। क्या आप अपनी विशेष स्थिति के बारे में अधिक जानकारी प्रदान करते हैं?

+0

"COM पंजीकरण जानकारी अद्यतित नहीं हो सकती", मेरा मतलब है कि रजिस्ट्री में जानकारी बदल गई हो सकती है, न कि .rgs फ़ाइल में। मैं रजिस्ट्री में जानकारी को पुनर्स्थापित करने के लिए पोस्ट-बिल्ड चरण चाहता हूं कि यह .rgs के अनुसार क्या होना चाहिए। – user200783