9

पर जुड़े एक डीएल को डिबग करना मॉड्यूलरिटी के लिए, मैं समय-समय पर संकलन के समय अपने समाधान में एक डीएल से लिंक कर रहा हूं ताकि मुझे इसे स्वतंत्र रूप से अपडेट करने की अनुमति दी जा सके। जब मैं लाइब्रेरी प्रोजेक्ट में ब्रेकपॉइंट्स डालता हूं, तो क्लास से लिंक होने पर इन्हें ट्रिगर नहीं किया जाता है, और एक प्रकार बनाया जाता है।रनटाइम

Assembly a = Assembly.LoadFile(FULL_APPLICATION_CACHE + targetVersion + "\\Core.dll"); 
Type engineCoreType = a.GetType("Core.EngineCore"); 
object instance = Activator.CreateInstance(engineCoreType); 

क्या यह संभव है दृश्य स्टूडियो इस परिदृश्य में अपनी सामान्य डीबगिंग टूल की पेशकश करने के लिए:

के लिए, इस प्रतिबिंब कोड है? मैं इसे कैसे कॉन्फ़िगर करूँगा?

+0

एक उपयोगी संबंधित पोस्ट [यहां] (https://stackoverflow.com/a/40524596/465053)। – RBT

उत्तर

8

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

+0

पीडीबी फ़ाइल को उसी निर्देशिका में कॉपी किया जा रहा है, लेकिन यह अभी भी ब्रेकपॉइंट्स को ट्रिगर नहीं करता है। उन्हें चिह्नित किया गया है "ब्रेकपॉइंट हिट नहीं होगा। इस दस्तावेज़ के लिए कोई प्रतीक लोड नहीं किया गया है"। सुझाव के लिए धन्यवाद हालांकि – Venatu

+1

लगता है कि वे सिंक से बाहर हैं तो ... – Jammer

+0

आप सही थे धन्यवाद! मैंने उपयोग की गई प्रतिलिपि विधि पिछले संस्करण को ओवरराइट नहीं किया था। – Venatu

10

डीबगर को असेंबली के लिए .pdb फ़ाइल खोजने में सक्षम होना आवश्यक है। आप डीबगर + विंडोज + मॉड्यूल विंडो से इसका निदान कर सकते हैं। डीएलएल पर राइट-क्लिक करें और सिंबल लोड जानकारी चुनें, यह आपको दिखाता है कि डीबगर पीडीबी के लिए कहाँ देखा गया था।

ध्यान दें कि आपको कभी विधानसभा का उपयोग नहीं करना चाहिए। इस परिदृश्य में लोडफाइल(), यह लोडिंग संदर्भ के बिना असेंबली लोड करता है। एक महंगा शब्द जिसका अर्थ है कि सीएलआर उस पर ध्यान नहीं देता है कि डीएलएल कहां से आया था और आपको एक से अधिक बार डीएलएल लोड करने की अनुमति देता है। खुद में एक स्पष्टीकरण क्यों डीबगर पीडीबी नहीं मिल सकता है। हमेशा इसके बजाय LoadFrom() का उपयोग करें।

+0

क्या आप संदर्भ के लाभों के बारे में अधिक जानकारी के लिए विस्तार या लिंक कर सकते हैं? यह कुछ ऐसा नहीं है जिसे मैंने पहले माना था, – Venatu

+2

सलाह के लिए धन्यवाद यह .NET के बारे में किसी भी मध्यस्थ पुस्तक में शामिल है –