में उपयोग की गई असेंबली के पथ प्राप्त करें मुझे एक ऐसी विधि चाहिए जो टाइप लेती है और प्रकार में उपयोग की जाने वाली सभी असेंबली के पथ लौटाती है।टाइप
public static IEnumerable<string> GetReferencesAssembliesPaths(this Type type)
{
yield return type.Assembly.Location;
foreach (AssemblyName assemblyName in type.Assembly.GetReferencedAssemblies())
{
yield return Assembly.Load(assemblyName).Location;
}
}
आम तौर पर इस विधि काम करते हैं, लेकिन हो कुछ नुकसान: मैं यह लिखा तो
मैं नहीं मिला था संदर्भित विधानसभाओं पाने के लिए/प्रकार से ही प्रकार, मैंने टाइप किया। Assembly.GetReferencedAssemblies() और पूरे असेंबली के संदर्भ प्राप्त हुए, न कि केवल इस प्रकार से संबंधित।
type.Assembly.GetReferencedAssemblies() असेंबलीनाम लौटाता है और इसमें कोई स्थान/पथ/फ़ाइलपैथ संपत्ति नहीं है। स्थान संपत्ति प्राप्त करने के लिए, मैंने पहले असेंबली.लोड() का उपयोग किया और फिर स्थान संपत्ति का उपयोग किया। मैं अपने पथ को पाने के लिए असेंबली लोड नहीं करना चाहता, क्योंकि वे आवश्यक नहीं हैं, और क्योंकि विधानसभा.लोड() FileNotFoundException या BadImageFormatException के साथ विफल हो सकती है।
सभी प्रकार असेंबली से संबंधित हैं - आपको बस टाइप करने में सक्षम होना चाहिए। Assembly.GetReferencedAssemblies()। ओह रुको, आप पहले से ही कर रहे हैं। मुझे लगता है कि यह लंबे समय तक हल हो गया है, है ना? 2011? –
@DxCK उस समस्या के बारे में कोई समाधान? मेरा मुद्दा: मेरी लाइब्रेरी प्रोजेक्ट संदर्भ Oracle.DataAccess 4.112.2.0, लेकिन निष्पादन समय में, GAC Oracle.DataAccess 4.121.1.0 से लोड करता है। असेंबली। गेट रेफरेंस एस्सेम्ब्लीज़() मुझे ओरेकल दें। डेटाएप 4.112.2.0 ओरेकल नहीं। डेटाएप 4.121.1.0। – Kiquenet
उपयोग करने के लिए, 'var results = this.GetType() पर जाएं। GetReferencesAssembliesPaths(); '। – Contango