2009-12-29 18 views
5

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

फाइलमोन का उपयोग करने के बारे में सोचा लेकिन वहां बहुत शोर है। इसकी एक .NET परियोजना है।

धन्यवाद।

+1

डुप्पी: http://stackoverflow.com/questions/383686/how-do-you-loop-through-currenlty-loaded-assemblies – GrayWizardx

+0

@GrayWizardx तो आप इसे बंद करने के लिए वोट क्यों नहीं देते? इस तरह यह काम करना चाहिए। –

+0

मैं मानता हूं कि प्रश्न मेरे जैसा ही हो रहा है, हालांकि मैं इसे अपने प्रोजेक्ट में उस तर्क को कोड किए बिना समझना चाहता हूं। मैंने यह – TheSean

उत्तर

0

आपको अपने एप्लिकेशन ऐपडोमेन (एस) का विश्लेषण करने और लोड किए गए असेंबली और स्थानों की सूची डंप करने के लिए .NET के प्रतिबिंब का उपयोग करने में सक्षम होना चाहिए।

var loadedAssemblies = AppDomain.CurrentDomain.GetAssemblies(); 
foreach (var assembly in loadedAssemblies) 
{ 
    Console.WriteLine(assembly.GetName().Name); 
    Console.WriteLine(assembly.Location); 
} 
+0

मुझे लगता है कि यह सबसे अच्छा जवाब है, हालांकि मैं उम्मीद नहीं कर रहा था। मैं इसे पूरा करने के लिए अपने प्रोजेक्ट में कोड जोड़ना नहीं चाहता था। लेकिन ऐसा लगता है कि यह काम करेगा। – TheSean

+0

ध्यान दें कि 'GetAssemblies() 'लगातार काम नहीं करेगा, क्योंकि यह रिकर्सिव नहीं है और यह किसी भी नेस्टेड असेंबली संदर्भों को याद करेगा। मैंने http://stackoverflow.com/questions/383686/how-do-you-loop-through-currently-loaded-assemblies/26300241#26300241 पर 'GetAssemblies()' का एक पुनरावर्ती संस्करण जोड़ा है। – Contango

0

चेक बाहर AppDomain.GetAssemblies

For Each Ass As Reflection.Assembly In CurrentDomain.GetAssemblies() 
    Console.WriteLine(Ass.ToString()) 
Next 
0

यह पहले से ही एक और question में उत्तर दिया जाता है।

इसका समूह वर्तमान लोडर स्थान के माध्यम से असेंबली और लूप की सूची प्राप्त करने के लिए वर्तमान एपडोमेन का उपयोग करता है।

1

प्रक्रिया एक्सप्लोरर?

+0

मुझे ऐसा लगता है ... या कुछ अन्य sysinternals सामान .. http://stackoverflow.com/questions/1980429/why-windows-7-isnt-written-in-c – monojohnny

0

यदि मैं आपके प्रश्न को समझ गया हूं, तो तेजी से तैनाती करने के लिए आप अपने प्रोजेक्ट के सभी संदर्भों में सेट कर सकते हैं लेकिन फ्रेमवर्क में सेटिंग "स्थानीय कॉपी करें" को सही है।

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

उम्मीद है कि इससे मदद मिलती है। यदि नहीं, तो बस कहें, मैं इस पर जारी रखने की कोशिश करूंगा।

+0

धन्यवाद, यह था कि सरल। जिस तरह से हमारा ऐप डिज़ाइन किया गया है वह यह है कि हमारे पास रन टाइम पर बहुत से संदर्भ लोड किए गए हैं। यह वही है जो इसे समझने में दर्द होता है। हम मूल रूप से इसमें एक सैकड़ों डीएलएल के साथ एक बिन फ़ोल्डर है। मेरी परियोजना को केवल एक सबसेट की जरूरत है। मैं * बस * सभी की प्रतिलिपि बना सकता हूं, लेकिन इसकी आवश्यकता से अधिक एमबीएस। – TheSean

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

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