2010-12-07 22 views
14

के विभिन्न संस्करणों का संदर्भ लेते हैं मेरे पास मेरे अनुप्रयोग के लिए महत्वपूर्ण दो अलग-अलग पुस्तकालय हैं जो log4net.dll के विभिन्न संस्करणों पर निर्भर हैं। मेरे बिन फ़ोल्डर में दोनों डीएल की कोशिश करने से सामान्य त्रुटि होती है जब मैं जिस तीसरे पक्ष के टुकड़े का उपयोग कर रहा हूं उसे कॉल किया जाता है:तृतीय पक्ष पुस्तकालय log4net.dll

फ़ाइल या असेंबली 'log4net, संस्करण = 1.2.10.0, संस्कृति = तटस्थ, PublicKeyToken = 1b44e1d426115821' लोड नहीं हो सका या इसकी निर्भरताओं में से एक। स्थित असेंबली की स्पष्ट परिभाषा असेंबली संदर्भ से मेल नहीं खाती है। (HRESULT से अपवाद: 0x80131040)

क्या कोई तरीका है कि एप्लिकेशन दोनों डीएलएल का संदर्भ दे सकता है? तीसरे पक्ष के डीएल विंडसर के आईओसी कंटेनर और पेपैल के एपीआई हैं, जो इस आवेदन के लिए महत्वपूर्ण हैं।

+0

मैं यहाँ एक अंग पर बाहर जा रहा हूँ, लेकिन मुझे लगता है कि तुम भी कोड के मालिक के बिना विधानसभाओं ILMerge सकता है और यह है कि समस्या दोषमुक्त होगा। –

उत्तर

9

इस प्रश्न में कुछ जवाब हो सकते हैं जो आपकी मदद करेंगे।

Referencing 2 different versions of log4net in the same solution

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

यहाँ कैसल के स्रोत कोड भंडार में log4net अमूर्त का स्थान है: https://github.com/castleproject/Castle.Core/tree/master/src/Castle.Services.Logging.log4netIntegration

मैं कैसल का उपयोग नहीं करते तो मैं आपको बता नहीं है कि यह कैसे कॉन्फ़िगर करने के लिए अपने स्वयं के log4net अमूर्त संदर्भ के लिए कर सकते हैं, लेकिन मैं इसे शर्त बहुत मुश्किल नहीं है (माना जाता है कि यह संभव है)।

यहां SO पर एक और पोस्ट का एक लिंक है जो लॉग 4net के साथ कैसल को कॉन्फ़िगर करने का वर्णन करता है। यह भी एक कस्टम लॉगिंग लॉगिंग सुविधा लिखने के बारे में संक्षेप में बात करती है:

Logging with Castle.Facilities.Logging and log4net

गुड लक!

+0

धन्यवाद, पहला लिंक काम किया! Log4net.dll के सभी प्रोजेक्ट संदर्भों को हटाकर और विभिन्न संस्करणों के रनटाइम संदर्भ बनाने के लिए ऐप/web.config का उपयोग करके, एप्लिकेशन किसी भी मेल के बारे में शिकायत किए बिना डीएलएल को खोजने में सक्षम था। विवरण के लिए लिंक "वही समाधान में लॉग 4नेट के 2 अलग-अलग संस्करणों को संदर्भित करना" देखें। –

1

जाने का एक और मार्ग, मुझे लगता है, लेकिन मैंने इसे कभी नहीं किया है, उन्हें जीएसी में डाल रहा है।

मेरा मानना ​​है कि आपके पास जीएसी में एक ही डीएल के विभिन्न संस्करण हो सकते हैं, और आपको ठीक होना चाहिए।

लेकिन मैं यह भी पागल हो सकता है :)

+3

हाँ आप कर सकते हैं, लेकिन यह एक सुरुचिपूर्ण समाधान नहीं है। – alexandrudicu

+1

आप एक स्केलेबिलिटी समस्या में भाग लेते हैं जिसमें आपको इसके लिए प्रत्येक मशीन पर जीएसी इंस्टॉल करना होगा। इसे .config में डालकर इसे एप्लिकेशन के साथ तैनात किया जा सकता है। –

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