2013-08-26 27 views
5

मेरी पावर खोल स्क्रिप्ट में मैं एक कस्टम असेंबली लोड कर रहा हूं और फिर New-Object द्वारा उस असेंबली की कक्षा को तुरंत चालू कर रहा हूं।फ़ाइल या असेंबली लोड नहीं कर सका

Assembly.LoadFile() सफलतापूर्वक निष्पादित करता है लेकिन New-Object कथन बेलो अपवाद देता है।

New-Object : Exception calling ".ctor" with "1" argument(s): "Could not load file or assembly 'MyAssembly, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' or one of i 
ts dependencies. The system cannot find the file specified." 

स्क्रिप्ट:

[System.Reflection.Assembly]::LoadFile("MyAssembly.dll") 
$a=New-Object MyAssembly.MyClass -ArgumentList "arg1" 

यह कस्टम विधानसभा संदर्भ केवल निम्नलिखित विधानसभाओं

System 
System.Core 
System.Runtime.Serialization 
System.Xml.Linq 
System.Data 
System.Xml 

मैं स्पष्ट रूप से नीचे की तरह System.Runtime.Serialization dll लोड की कोशिश की। लेकिन एक ही अपवाद

[System.Reflection.Assembly]::Load("System.Runtime.Serialization, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089") 

कोई विचार?

+0

प्रश्न: क्या आपकी असेंबली जीएसी में पंजीकृत है? – Mitul

+0

नहीं, यह जीएसी में पंजीकृत नहीं है। – nhrobin

+0

यह देखने के लिए लोड करें कि यह http://msdn.microsoft.com/en-us/library/1009fa28.aspx काम करता है या नहीं। – Mitul

उत्तर

6

LoadFile का उपयोग न करें। आप PowerShell V2 उपयोग कर रहे हैं के बाद से, पसंदीदा तरीका Add-Type

Add-Type -AssemblyName "MyLibrary.dll" 

http://www.dougfinke.com/blog/index.php/2010/08/29/how-to-load-net-assemblies-in-a-powershell-session/ वर्तमान खोल runspace में एक पुस्तकालय आयात करने के लिए उपलब्ध अलग अलग तरीकों की एक अच्छी सूची है।

http://technet.microsoft.com/en-us/library/hh849914.aspx पर ऐड-प्रकार TechNet documentaion है और कैसे एक लोड पुस्तकालय

+0

यह काम किया || धन्यवाद .. – nhrobin

+0

मैं इसे यहां भी फेंक दूंगा: http://www.madwithpowershell.com/2013/10/add-type-vs-reflectionassembly-in.html ऐड-टाइप असेंबली के बारे में वास्तव में पसंद है –

0

मैं इस मुद्दे का सामना करना पड़ा में स्थिर तरीकों का उपयोग करने के लिए जब मैं 64 से 32-बिट Oracle.DataAccess.dll आह्वान करने के लिए करने की कोशिश की सहित उदाहरण है बिट विंडोज पावरहेल आईएसई। बाद में मैंने विंडोज पावरहेल आईएसई (x86) में एक ही कोड का उपयोग किया और मैं Oracle.DataAccess.dll फ़ाइल को आमंत्रित करने में सक्षम था। चीयर्स!

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