मैं सोच रहा हूं कि निर्भरताओं के संबंध में अन्य परियोजनाओं में पुस्तकालयों की रिलीज बनाने के दौरान हेरिस्टिक क्या हैं और यदि मुझे उन्हें शामिल करना चाहिए या नहीं।असेंबली विलय के लिए सर्वोत्तम अभ्यास?
मेरे समस्या है निम्नलिखित:
मैं एक CommonUtilities पुस्तकालय के रूप में नाम उपयोगिताओं कि एक से अधिक जगह में इस्तेमाल किया जा सकता का एक सेट का तात्पर्य यह प्रावधान है कि है। CommonUtilities की निर्भरताओं में log4net.dll (लॉगिंग फ्रेमवर्क) और Oracle.DataAccess.dll (डेटाबेस ड्राइवर) शामिल हैं।
मेरे पास माइप्रोजेक्ट नामक एक और प्रोजेक्ट है जिसमें मैं कॉमन यूटिलिटीज को शामिल करना चाहता हूं। MyProject भी Oracle.DataAccess पर निर्भर करता है।
यदि मैं आईएलएमर्ज का उपयोग करता हूं और कॉमन यूटिलिटीज को एक असेंबली में जोड़ता हूं CommonUtilities.dll और संदर्भ जो MyProject सब कुछ संकलित करता है लेकिन मुझे यकीन है कि मुझे स्पष्ट रूप से Oracle.DataAccess को MyProject से संदर्भित करना चाहिए क्योंकि यह एक निर्भरता है और असेंबली का उपयोग नहीं किया जाता है सीयू। Oracle.DataAccess के संदर्भ में एक साथ जोड़ना, साथ ही बयान का उपयोग करके संदिग्ध परिणामस्वरूप दो ओरेकल। डेटाएप असेंबली संदर्भित हैं।
आईएलएमर्ज/मेरे मामले में आंतरिककरण का उपयोग करके आंतरिक त्रुटियों के प्रकार के रूप में त्रुटियों को संकलित करने में परिणाम होता है। डेटाएप असेंबली को सामान्य उपयोगिताओं से वापस किया जा रहा है और जैसा कि वे आंतरिक माइप्रोजेक्ट चिह्नित हैं, लौटाए गए प्रकार को पहचान नहीं पाते हैं।
इस काम को करने का एकमात्र तरीका यह है कि इस विशेष असेंबली (Oracle.DataAccess) को सामान्य उपयोग में विलय न करें और केवल MyProject से संदर्भ दें। बदले में यह एक नई समस्या पैदा करता है: कौन सा Oracle.DataAccess.dll मुझे संदर्भित करना चाहिए - निर्भरता के साथ वितरित निर्भरता या नहीं?
क्या इस सब के बारे में जाने के अन्य तरीके हैं?
मैं ilmerge पर मेरे सिर खरोंच - मैं एक एकल फाइल में सभी विधानसभाओं रखने के लिए एक फायदा नहीं दिख रहा। कोई भी मुझे प्रबुद्ध करने की देखभाल करता है? – cfeduke