当实例化.net类从外部库实现接口时,powershell 2 new-object"找不到类型..."异常

And*_*rey 4 powershell exception powershell-2.0 .net-3.5

我发现了一个很容易重现的问题.请告知是否有任何解决方法?

有两个.Net库libraryA.dll和libraryB.dll.每个库都有一个接口InterfaceA和InterfaceB.ClassAA实现了InterfaceA并且存在于libraryA中.ClassAB实现了InterfaceB并且位于同一个库A中.同样的方式ClassBB - LibraryB - InterfaceB; ClassBA - LibraryB - InterfaceA

当实例化ClassAA和ClassBB而不是ClassAB或ClassBA时,New-Object可以正常工作.他们经常无法实例化.

这里是PowerShell代码

[System.Reflection.Assembly]::LoadFile(‘c:\LibraryA.dll’)
[System.Reflection.Assembly]::LoadFile(‘c:\LibraryB.dll’)

$obj1 = new-object -typeName ClassAA   (IT WORKS)
$obj2 = new-object -typeName ClassBB   (IT WORKS)
$obj3 = new-object -typeName ClassAB   (EXCEPTION THROWN)
$obj4 = new-object -typeName ClassBA   (EXCEPTION THROWN)
Run Code Online (Sandbox Code Playgroud)

非常感谢,

安德烈

jos*_*rry 6

而不是::LoadFile,使用:

[System.Reflection.Assembly]::LoadFrom(‘c:\LibraryA.dll’)
[System.Reflection.Assembly]::LoadFrom(‘c:\LibraryB.dll’)
Run Code Online (Sandbox Code Playgroud)

当您使用:: LoadFrom时,程序集将加载到其加载目录的上下文中,同一目录中的引用程序集将自动解析.:: LoadFile用于加载共享标识但位于不同目录中的程序集,并且不保留任何加载上下文,因此不会解析引用的程序集.