मैं एक PowerShell v3 मॉड्यूल पर काम कर रहा हूं जिसे कुछ बाहरी .NET असेंबली में निहित प्रकारों के साथ काम करने की आवश्यकता है।PowerShell v3 मॉड्यूल में बाहरी .NET असेंबली का विश्वसनीय रूप से संदर्भ कैसे लें?
मैं इस मॉड्यूल को तैनाती की आसानी के लिए उचित रूप से आत्मनिर्भर होना चाहता हूं और मैं जीएसी में लोड होने वाली इन असेंबली पर भरोसा नहीं करना चाहता हूं। आदर्श रूप से, मैं मॉड्यूल फ़ोल्डर में आवश्यक असेंबली डीएलएल रखना चाहता हूं और फिर मॉड्यूल लोड होने पर इन असेंबली को स्वचालित रूप से लोड करने के लिए PowerShell पर निर्भर करता हूं।
मुझे पता है कि मैं जानवर बल के लिए ऐड-प्रकार कमांड इस्तेमाल कर सकते हैं तो जैसे विधानसभाओं लोड:
Add-Type -AssemblyName "Some.Assembly, Version=1.0.0.0, Culture=neutral, PublicKeyToken=sometoken"
लेकिन मैं वरना प्रकट एक मॉड्यूल में आवश्यक विधानसभाओं संपत्ति के बारे में पढ़ा है और मुझे लगता है कि उम्मीद कर रहा हूँ
# Assemblies that must be loaded prior to importing this module
# RequiredAssemblies = @()
मॉड्यूल के भीतर बाहरी विधानसभाओं संदर्भ के लिए सबसे विश्वसनीय तरीका क्या है: इस दृष्टिकोण प्रतीत होता है कमजोर ऐड-प्रकार कोड को समाप्त कर सकता? मॉड्यूल लोड होने पर मैनिफेस्ट में निर्भरता को स्पष्ट रूप से असेंबली लोड करना होगा? यदि मैंने आवश्यक असेंबली सूचीबद्ध करने के लिए मॉड्यूल मेनिफेस्ट का लाभ उठाया है तो क्या मुझे अभी भी कोड लिखना होगा जो असेंबली लोड करता है?
मैं वास्तव में एक सरल "काम करने के लिए इसे" समाधान की तलाश नहीं कर रहा हूं क्योंकि मुझे पहले से ही एड-टाइप दृष्टिकोण का उपयोग करने के लिए यह मिल गया है ... मैं करने के सबसे विश्वसनीय तरीके के लिए मार्गदर्शन और संशोधन की तलाश में हूं इस।
क्या आप जानते हैं कि इस संपत्ति में असेंबली को विश्वसनीय रूप से कैसे सूचीबद्ध किया जाए? यदि मैंने पूरी तरह से योग्य नामों का उपयोग किया और मॉड्यूल के फ़ोल्डर में असेंबली डीएल रखा है तो क्या पर्याप्त है या मुझे किसी प्रकार का पथ प्रदान करने की आवश्यकता होगी? असेंबली लोडर इन असेंबली के लिए कहां देखता है? – syneptody
@ सिंप्टोडी लोडिंग नियमों को [एमएसडीएन] पर दस्तावेज किया गया है (http://msdn.microsoft.com/en-us/library/yx7xezcf%28v=vs.100%29.aspx): मुझे नहीं लगता कि पीएसएच कुछ भी करता है मॉड्यूल की निर्देशिका को उस खोज पथ में जोड़ने के अलावा, यहां बहुत खास है। शायद एक उदाहरण के बाद (जैसे [पीएससीएक्स] (http://pscx.codeplex.com/))? – Richard
@syneptody मेरे उपयोग से मेरे पास psd1 फ़ाइल में असेंबली का नाम है, लिपि की एक ही निर्देशिका में असेंबली है और यह बिना किसी समस्या के काम करता है। उदाहरण के लिए 'RequiredAssemblies = @ (' IHE.CDA.Generation.Trifolia ') ' – Tedford