2013-08-26 8 views
5

Güç kabuk komut dosyasına, özel bir yükleme yüklüyorum ve daha sonra bu derlemenin bir sınıfını New-Object ile başlatıyorum.Dosya veya montaj yüklenemedi

Assembly.LoadFile() başarıyla yürütür ancak New-Object bildirimi, feryat istisnasını verir.

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." 

Senaryo:

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

Bu özel montaj referanslar yalnızca aşağıdaki montajları

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

açıkça aşağıda gibi System.Runtime.Serialization dll yüklenirken çalıştı. Ancak aynı istisnai durum:

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

Herhangi bir fikrin var mı?

+0

S: Derlemeniz gac'ta kayıtlı mı? – Mitul

+0

Hayır, GAC'ye kayıtlı değil. – nhrobin

+0

http://msdn.microsoft.com/en-us/library/1009fa28.aspx dosyasının çalışıp çalışmadığını görmek için LoadFrom'u deneyin. – Mitul

cevap

6

LoadFile'u kullanmayın. Eğer PowerShell V2 kullandığınıza göre, tercih edilen yöntem 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/ akım kabuk runspace içine bir kütüphane almak için kullanılabilen farklı yollardan iyi bir listesi vardır olduğunu.

http://technet.microsoft.com/en-us/library/hh849914.aspx

Eklenti Tipinin technet documentaion ve ben 64- 32 bitlik Oracle.DataAccess.dll çağırmak çalıştığında Sorunu karşılaştığı

+0

Çalıştı || Teşekkürler .. – nhrobin

+0

Bunu bir kenara fırlatacağım: http://www.madwithpowershell.com/2013/10/add-type-vs-reflectionassembly-in.html Eklenti Türü montajlar hakkında gerçekten seçici –

0

yüklü bir kütüphanede statik yöntemlerin nasıl kullanılacağı da dahil örnekler vardır biraz Windows Powershell ISE. Daha sonra aynı kodu Windows Powershell ISE'de (x86) kullandım ve Oracle.DataAccess.dll dosyasını çağırmayı başardım. Şerefe!