2010-04-13 8 views
9

मुझे लॉग 4नेट के साथ कोई समस्या है जो मुझे थोड़ी देर के लिए परेशान कर रहा है और मैंने इसे हल करने का संकल्प किया है।log4net निर्भरता समस्या

मेरे पास एक क्लास लाइब्रेरी है जो log4net का संदर्भ देती है। मैं एक अन्य परियोजना में इस वर्ग पुस्तकालय संदर्भ अगर मैं तो इस परियोजना अन्यथा मैं एक निर्माण त्रुटि

Unknown build error, 'Cannot resolve dependency to assembly 'log4net, Version=1.2.10.0, Culture=neutral, PublicKeyToken=1b44e1d426115821' because it has not been preloaded. When using the ReflectionOnly APIs, dependent assemblies must be pre-loaded or loaded on demand through the ReflectionOnlyAssemblyResolve event.' 

मुझे पता है कि त्रुटि संदेश शायद मुझे समाधान कह रहा है कर रहा हूँ, दुर्भाग्य से मैं नहीं मिल में log4net संदर्भ होना चाहिए निरर्थक शब्द बोलते हैं ...

चियर्स लोग

एलेक्स ..

उत्तर

7

यहाँ लिंक जो बताती है क्या हो रहा है और यह कैसे तय करने के लिए है:

http://blogs.msdn.com/jmstall/archive/2006/11/22/reflection-type-load-exception.aspx

ऊपर के लिंक से एक अंश:

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

प्रतिबिंब API का उपयोग करने के लिए, आपको उपयोग की जाने वाली सभी निर्भरताओं को हल करना होगा।

+0

नहीं, क्योंकि यह त्रुटि तब होती है जब मैं अपनी कक्षा लाइब्रेरी को रिक्त प्रोजेक्ट में जोड़ता हूं, इससे पहले कि मैं कक्षा पुस्तकालय में कोई भी कॉल करता हूं। –

+0

@Alex DeLarge मैंने एक एमएसडीएन आलेख से लिंक किया है जो बताता है कि क्या हो रहा है। – kemiller2002

+1

उस केविन के लिए धन्यवाद, मैं इस जवाब को स्वीकार करने वाला हूं लेकिन लॉग 4नेट के साथ इसे विशेष रूप से हल करने के तरीके के बारे में और अधिक देख रहा था। –

1

मुझे एक ही समस्या थी। मैं अभी भी इसे पूरी तरह समझ नहीं पा रहा हूं, लेकिन मैं आपको बता सकता हूं कि मैंने अपनी समस्या का समाधान कैसे किया। मेरे पास प्रोजेक्ट ए के प्रोजेक्ट संदर्भ के साथ एक यूनिट टेस्ट प्रोजेक्ट बी था, जो log4net का संदर्भ देता है। तो मेरे लिए gibberish का मतलब है जब विजुअल स्टूडियो इकाई परीक्षण परियोजना के लिए .accessor फ़ाइल बनाने की कोशिश कर रहा है, यह प्रोजेक्ट ए पर प्रतिबिंबित करता है। इसका मतलब है कि यह प्रोजेक्ट ए के संदर्भ लोड करने का प्रयास करता है, लेकिन असेंबली लोडर इसे नहीं ढूंढ सकता क्योंकि मैं जीएसी में log4net नहीं है, केवल स्थानीय रूप से प्रोजेक्ट ए के संदर्भ में। मेरे मामले में, मेरे DEVPATH में लॉग 4नेट जोड़ना (जीएसी भी काम करेगा) समाधान था।

4

मुझे एक नया WPF प्रोजेक्ट बनाते समय log4net के साथ एक ही समस्या थी और लॉग 4नेट का संदर्भ देने वाली किसी अन्य प्रोजेक्ट का संदर्भ जोड़ना पड़ा। मैंने इन निर्देशों का उपयोग कर जीएसी में log4net.dll जोड़कर इस मुद्दे को हल किया: http://msdn.microsoft.com/en-us/library/dkkx7f79.aspx

+1

हाँ, यह काम करेगा लेकिन दुर्भाग्य से जीएसी में असेंबली जोड़ना हमेशा संभव नहीं होगा। –

+0

मेरे पास log4net और एक WPF प्रोजेक्ट के साथ एक ही समस्या थी। Log4Net को एक अलग प्रोजेक्ट, क्लास लाइब्रेरी में संदर्भित किया गया था, जिसे मैं अपने डब्ल्यूपीएफ प्रोजेक्ट में संदर्भित करना चाहता था। मैंने WPF प्रोजेक्ट में लॉग 4नेट को स्थापित करने के लिए पैकेज मैनेजर कंसोल का उपयोग किया था (इंस्टॉल-पैकेज लॉग 4नेट -प्रोजेक्ट My.Wpf.Project) और इससे समस्या हल हो गई। –