2009-12-30 11 views
9

प्रबंधित कोड का निर्माण करते समय विजुअल स्टूडियो सही ढंग से (और पुनरावर्ती) संदर्भित प्रबंधित परियोजनाओं के डीएलएस को परियोजना के आउटपुट फ़ोल्डर में कॉपी करता है।प्रबंधित डीएलएस की अप्रबंधित निर्भरताओं को समझने के लिए विजुअल स्टूडियो बिल्ड सिस्टम कैसे प्राप्त करें?

हालांकि, यदि उनमें से कोई एक संदर्भ प्रबंधित डीएलएल है जो अप्रबंधित डीएलएस पर निर्भर करता है तो इन अप्रबंधित DLL को आउटपुट फ़ोल्डर में कॉपी नहीं किया जाता है, भले ही एक ही समाधान में उनकी संबंधित परियोजनाएं हों और प्रबंधित की निर्भरताओं के रूप में सूचीबद्ध हों DLL।

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

जिस समाधान का हम अभी उपयोग कर रहे हैं वह आवश्यक डीएलएल की प्रतिलिपि बनाने के लिए एक प्री-बिल्ड इवेंट है, लेकिन यह समय बर्बाद कर देता है और त्रुटि-प्रवण होता है क्योंकि इसे प्रबंधित डीएलएल का उपयोग करने वाली प्रत्येक परियोजना के लिए दोहराया जाना आवश्यक है।

इसलिए मैं जानना चाहूंगा कि बिल्ड सिस्टम को यह समझने का कोई तरीका है कि प्रबंधित डीएलएल की प्रतिलिपि बनाने के लिए इसे हमेशा प्रबंधित डीएलएल की अप्रबंधित निर्भरताओं की प्रतिलिपि बनाना चाहिए?

उत्तर

5

एक वर्कअराउंड प्रबंधित डीएलएल प्रोजेक्ट में एक और नोड जोड़ने, अप्रबंधित डीएलएल नामकरण और बिल्ड एक्शन = "कोई नहीं" सेट करने और आउटपुट निर्देशिका = "कॉपी अगर नई है" को सेट करना प्रतीत होता है।

संपादित करें: एक सी ++/CLR परियोजना के निर्माण के लिए, मुझे लगता है कि यह काम करेगा:

नोड जोड़ें, और करने के लिए अपने निर्माण उपकरण सेट कस्टम उपकरण बनाएँ। फिर, कस्टम बिल्ड चरण पेज में, कमान को प्रति $ (InputPath) $ (OutDir) और आउटपुटको $ (OutDir) \ $ (InputFileName) निर्धारित किया है। ऐसा लगता है कि काम करना चाहिए।

+0

यह एक उत्कृष्ट काम की तरह लगता है। कम से कम इस तरह से एक ही स्थान पर इसका प्रबंधन किया। मैं इसे जल्द से जल्द कोशिश करता हूं क्योंकि मेरे पास यह सुनिश्चित करने के लिए समय है कि यह सही तरीके से काम करता है। हालांकि मुझे अभी भी दिलचस्पी होगी कि कोई पूर्ण स्वचालित समाधान है या नहीं। – Ziphnor

+0

मेरा मानना ​​है कि समाधान प्रबंधित सी # परियोजनाओं के लिए काम करेगा। हालांकि हमारे परिदृश्य में प्रबंधित परियोजना एक सी ++ सीएलआर परियोजना है। सी ++ सीएलआर परियोजनाओं में सी # परियोजनाओं में प्रोजेक्ट आइटम्स के लिए "आउटपुट निर्देशिका में कॉपी करें" संपत्ति नहीं है। क्या ऐसी कोई कार्रवाई निर्दिष्ट करने का कोई और तरीका है? – Ziphnor

+0

@ ज़िफ़्नर: सी ++/सीएलआर परियोजनाओं के साथ काम करने के लिए एक विधि शामिल करने के लिए मेरी पोस्ट संपादित की गई। – Tarydon

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