2011-01-05 16 views
23

मेरे पास एक प्रोजेक्ट है जो IKVM का उपयोग कर जावा लाइब्रेरी का उपयोग करता है। मेरे द्वारा बनाए गए DLL प्लस अपने प्रोजेक्ट के लिए संदर्भ के रूप में सभी संभव iKVM DLLs जोड़ा है, लेकिन जब मैं इसे चलाने के लिए, मैं निम्नलिखित रनटाइम त्रुटि मिलती है:डीबग कैसे करें "फ़ाइल या असेंबली लोड नहीं हो सका" रनटाइम त्रुटियां?

System.IO.FileNotFoundException : Could not load file or assembly 'core, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null' or one of its dependencies. The system cannot find the file specified.

मैं सच में यकीन है कि कैसे इस त्रुटि को डिबग करने के लिए नहीं कर रहा हूँ। क्या यह जानने का कोई तरीका है कि वास्तव में किस प्रकार का गुम है? विवरण से मुझे लगता है कि यह जेनरेट डीएलएल (जावा lib से) है, लेकिन मैंने इसे संदर्भ के रूप में ठीक से जोड़ा है।

मैंने और क्या गलत किया है?

+0

मुझे यकीन है कि नहीं कर रहा हूँ के रूप में तो मैं एक जवाब प्रस्तुत नहीं होगा:

का तरीका यहां बताया प्रक्रिया मॉनिटर का उपयोग कर सकते डिबग करने के लिए समस्याओं "फ़ाइल या विधानसभा लोड नहीं कर सका" पर एक ब्लॉग पोस्ट है। एक लापता डीएलएल एक IOexception फेंक नहीं होगा। अधिक संभावना है कि डीएलएल कुछ प्रकार की फाइल (एक कॉन्फ़िगरेशन या कुछ) पढ़ता है और यह गायब है। आपको शायद इस IKVM के लिए मैन्युअल जांचना चाहिए। –

+2

असेंबली भाषा प्रोग्रामिंग के लिए "असेंबली" टैग है। मैंने इसे हटा दिया है, आशा है कि आपको बुरा लगेगा। – Jester

+0

ग्रेट विचार, लेकिन मुझे लगता है कि आप इस पोस्ट के लिए सबसे अच्छा ikvm टैग जोड़ना भूल गए हैं;) –

उत्तर

20

आप .NET ऐप्स में असेंबली लोडिंग समस्याओं को डीबग करने के लिए Fusion Log Viewer का उपयोग कर सकते हैं।

इसके अलावा, Process Monitor सामान्य फ़ाइल-लोड समस्याओं की पहचान करने में बहुत उपयोगी है।

2

Dependency Walker नामक एक प्रोग्राम है जो आपको किसी दिए गए पीई फ़ाइल (डीएलएल, एक्सई, ओसीएक्स ...) की निर्भरताओं को देखने की अनुमति देता है।

यह त्रुटि वास्तव में परेशान है, डीबग करना बहुत मुश्किल है। आपको यह सुनिश्चित करना होगा कि आपका डीएल मौजूद है और कोई भी निर्भरता इस डीएल में है। यह मुख्य बिंदु आमतौर पर सिरदर्द में जाता है।

+7

निर्भरता वॉकर देशी निर्भरताओं को हल करेगा। यह एक प्रबंधित निर्भरता मुद्दे की तरह दिखता है। –

5

आप फ़्यूज़न लॉग व्यूअर (माइक्रोसॉफ्ट एसडीके में उपलब्ध) का उपयोग कर निदान कर सकते हैं। इसे व्यवस्थापक में लॉन्च करें और सेटिंग्स में लॉग को सक्रिय करें।

यह आपके संदर्भ लोडिंग (और उनके सभी संदर्भ) के संबंध में सभी सूचनाओं को लॉग करेगा। यह स्पष्ट रूप से आपको बताएगा कि कौन सा संदर्भ गुम है और जहां उसने इसकी खोज की है।

MSDN on Fusion Log Viewer

0

का उपयोग ProcessMonitor (Sysinternals सुइट से), आप जो देख सकते हैं अपनी प्रक्रिया सही की तलाश में है इससे पहले कि अपवाद फेंक दिया है DLL।

6

बस उस निर्भरता वॉकर और फ़्यूज़न लॉग व्यूअर में चिमिंग न करने वाले अनुप्रयोगों के लिए अच्छी तरह से काम नहीं करते हैं जिनके पास मूल और प्रबंधित कोड एक साथ है या देशी कोड की गतिशील लोडिंग कर रहा है।

Debug Could not load file or assembly or one of its dependencies error with Process Monitor

पद के रूप में भी इस कार्य में से कुछ को स्वचालित करने के लिए एक उपकरण शामिल हैं: यहाँ एक अच्छा पद (या अमान्य अनुमति) लापता हल करने के लिए कैसे कदम से कदम विधानसभा त्रुटियों समझा प्रक्रिया पर नजर रखने के उपयोग करते हुए कि उन स्थितियों को शामिल किया गया है अच्छी तरह से

0

निर्भरता वॉकर मूल रूप से देशी पीई फ़ाइल द्वारा आवश्यक सभी डीएलएल को हल करता है और लापता निर्भरताओं को झंडे करता है, जबकि फ़्यूज़न लॉग व्यूअर रनटाइम के दौरान प्रबंधित कोड में असेंबली बाध्यकारी समस्याओं को पकड़ता है। प्रबंधित करने के लिए .Net कोड जो देशी डीएलएल को गतिशील रूप से लोड करता है, ये उपकरण पर्याप्त नहीं हैं। https://www.codeproject.com/Articles/560816/Troubleshooting-dependency-resolution-problems-usi

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