2010-03-26 5 views
7

एमईएफ का उपयोग करने की बात आने पर मुझे कुछ बुनियादी याद आ रही है। मुझे इसे नमूने और एक साधारण कंसोल ऐप का उपयोग करके काम करना पड़ा जहां सब कुछ एक ही असेंबली में है। फिर मैंने एक अलग परियोजना में कुछ आयात और निर्यात लगाए जिसमें विभिन्न संस्थाएं शामिल हैं। मैं इन इकाइयों को एमएस टेस्ट में उपयोग करना चाहता हूं, लेकिन रचना वास्तव में कभी नहीं की जाती है। जब मैं संरचना सामग्री को किसी इकाई के कन्स्ट्रक्टर में प्रश्न में ले जाता हूं तो यह काम करता है, लेकिन यह स्पष्ट रूप से गलत है। क्या GetExecutingAssembly केवल परीक्षण प्रक्रिया को "देखें" है? मैं फिर से कंटेनर क्या याद कर रहा हूँ? मैंने बिना भाग्य के परीक्षण में कंटेनर को प्रयोग में डालने की कोशिश की। एमईएफ दस्तावेज़ अभी भी बहुत कम हैं और मुझे एक आवेदन (या एमएस टेस्ट) का एक साधारण उदाहरण नहीं मिल रहा है जो एक अलग परियोजना से इकाइयों का उपयोग करता है ...एमईएफ अन्य असेंबली में भागों को नहीं ढूंढता

उत्तर

9

.NET में, प्रत्येक exe या DLL फ़ाइल को असेंबली कहा जाता है। तो जब आप "निष्पादन असेंबली" के आधार पर एक कैटलॉग बनाते हैं और इसे एप्लिकेशन एंट्री पॉइंट पर उपयोग करते हैं, तो आप केवल उन हिस्सों को शामिल करते हैं जिन्हें exe प्रोजेक्ट में परिभाषित किया गया है। आपको डीएलएल में परिभाषित कोई भी भाग नहीं मिलता है।

कोशिश की जगह इस:

var catalog = new AssemblyCatalog(Assembly.GetExecutingAssembly()); 

इस द्वारा:

var catalog = new AggregateCatalog(
    new ComposablePartCatalog[] 
    { 
     new AssemblyCatalog(Assembly.GetExecutingAssembly()), 
     new DirectoryCatalog(".") 
    }); 

संपादित करें: मैं बस की खोज की एक सरल समाधान है कि वहाँ:

var catalog = new DirectoryCatalog(".", "*"); 

() वास्तव में, एक असेंबली में कई फाइलें हो सकती हैं लेकिन इसका शायद ही कभी उपयोग किया जाता है। शब्द का उपयोग साइड-बाय-साइड COM के लिए भी किया जाता है।

3

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

GetExecutingAssembly ठीक वही करता है जो यह कहता है - यह वर्तमान में निष्पादित असेंबली प्राप्त करता है, जिसका अर्थ है कि उस विशिष्ट कोड को लिखा गया है। आपके मामले में, यह परीक्षण असेंबली है, न कि आपकी "लाइब्रेरी" परियोजना।

क्या आपका परीक्षण लाइब्रेरी प्रोजेक्ट को कैटलॉग में स्पष्ट रूप से जोड़ता है, और यह अपेक्षा की जाती है कि आप अपेक्षा करते हैं।

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