/ / असेंबली में इसे GAC - c # में स्थापित करने के बाद ही असेंबली लोड हो रहा है

जीएसी - सी #, असेंबली में इसे स्थापित करने के बाद असेंबली लोडिंग

मेरे पास एक प्रोग्राम है जो एक msi इंस्टॉलर को कॉल करता है। Msi पैकेज सफलतापूर्वक स्थापित होने के बाद मैंने एक असेंबली को लोड करने का प्रयास किया था जिसे msi पैकेज ने GAC में जोड़ा था। मैं विधानसभा को लोड करने में सक्षम नहीं हूं, लेकिन इस विशेष विधानसभा को जीएसी में जोड़ा जा रहा है। जब मैं दूसरी बार प्रोग्राम चलाता हूं तो असेंबली ठीक से लोड हो जाती है। यहाँ छद्मकोश है

load assembly(assemblyname)
{
if(!Assembly.load(assemblyname))
msi.install();
Assembly assembly =Assembly.load(assemblyname)
if(assembly == null)
console.writeline("assembly not loaded");
}

यदि msi पैकेज पहले से स्थापित नहीं है, तो मैंजब मैं यह फ़ंक्शन चलाता हूं तो हमेशा पहली बार असेंबली लोड नहीं होती है। किसी तरह मुझे लगता है कि यह जीएसी सूची से संबंधित है जो कार्यक्रम को निष्पादित होने से पहले मौजूद है। क्या कोई ऐसा तरीका है जहां मैं इसे पुनः लोड कर सकता हूं?

उत्तर:

उत्तर № 1 के लिए 1

पोस्ट के रूप में छद्म कोड निश्चित रूप से विफल हो जाएगा। सीएलआर पिछली विधानसभा को याद करता है। लोड () विफलताओं और बाद में लगातार उन्हें विफल कर देगा, भले ही विधानसभा उपलब्ध हो गई।

यह स्पष्ट नहीं है कि आप क्यों लोड करने का प्रयास करते हैंफिर से विधानसभा। यदि यह ठीक से स्थापित नहीं है, तो यह मानकर आगे बढ़ें कि क्या स्थापित नहीं हुआ है या बस हमेशा इंस्टॉल करें और इंस्टॉलर तक छोड़ दें ताकि यह पता चल सके कि असेंबली पहले से मौजूद है। यदि वह व्यावहारिक नहीं है, तो आपको उपयोग करने की आवश्यकता है IAssemblyCache इंटरफ़ेस उपस्थिति के लिए जाँच करने के लिए, QueryAssemblyInfo () विधि।