ध्यान दें कि Assembly.GetReferencedAssemblies
में केवल एक विशेष असेंबली शामिल है यदि आप वास्तव में अपनी असेंबली में उस असेंबली में एक प्रकार का उपयोग करते हैं (या आपके द्वारा उपयोग किए जाने वाले प्रकार को उस असेंबली में एक प्रकार पर निर्भर करता है)। विजुअल स्टूडियो में संदर्भों की सूची में केवल एक असेंबली शामिल करने के लिए पर्याप्त नहीं है। हो सकता है कि यह आपके द्वारा अपेक्षित अपेक्षाओं के आउटपुट में अंतर बताए? मुझे लगता है कि यदि आप असंभव है कि प्रतिबिंब का उपयोग कर विजुअल स्टूडियो में संदर्भों की सूची में मौजूद सभी असेंबली प्राप्त करने में सक्षम होने की उम्मीद कर रहे हैं; असेंबली के लिए मेटाडेटा में असेंबली के बारे में कोई जानकारी शामिल नहीं है जिस पर दी गई असेंबली पर निर्भर नहीं है।
यही कारण है, ने कहा कि एक बार आप निम्नलिखित की तरह कुछ देना चाहिए सभी संदर्भित विधानसभाओं की एक सूची आप उन विधानसभाओं में सभी प्रकार से अधिक की गणना पुनः प्राप्त किया है:
foreach (var assemblyName in Assembly.GetExecutingAssembly().GetReferencedAssemblies()) {
Assembly assembly = Assembly.Load(assemblyName);
foreach (var type in assembly.GetTypes()) {
Console.WriteLine(type.Name);
}
}
आप विधानसभाओं कि संदर्भित की जरूरत है विजुअल स्टूडियो में आपको csproj
फ़ाइल को पार्स करना होगा। इसके लिए, तत्व Reference
तत्वों को देखें।
अंत में, यदि आप जानते हैं कि एक असेंबली कहां रहता है, तो आप इसे Assembly.LoadFile
का उपयोग करके लोड कर सकते हैं और फिर अनिवार्य रूप से उस लोडेड असेंबली में रहने वाले प्रकारों पर गणना करने के लिए ऊपर के रूप में आगे बढ़ सकते हैं।
क्या आप प्रोजेक्ट द्वारा संदर्भित असेंबली का निरीक्षण करने की कोशिश कर रहे हैं, या कहीं भी फाइल सिस्टम पर बैठे हैं? – Amy
मुझे संदेह है कि सीएलआर के कार्यान्वयन से सभी असेंबली से सभी प्रकार मिलना असंभव हो जाएगा क्योंकि उन्हें आयात समय पर संकलित किया जाना चाहिए, लेकिन मैं वास्तव में उस पर कोई विशेषज्ञ नहीं हूं, इसलिए आपको केवल आगे की खोज के लिए एक संकेत के रूप में मेरी टिप्पणी का उपयोग करें। – zneak
@ yodaj007 संदर्भित असेंबली – AngryHacker