通过反射加载程序集成功,Add-Type 失败

jam*_*iet 4 .net powershell

我在 Powershell 中使用 .net 程序集。此代码成功运行:

[Reflection.Assembly]::LoadFile("E:\Workspaces\RTE\dh.PSP.Common\Mainline\Source\dh.Common.MetaData\bin\dh.Common.Metadata.dll")
$marketMetadataRepository = New-Object dh.Common.Metadata.MarketMetadataRepository
Run Code Online (Sandbox Code Playgroud)

结果:

GAC 版本位置

--- ------- -------- 假 v4.0.30319
E:\Workspaces\RTE\dh.PSP.Common\Mainline\Source\dh.Common.MetaData\bin\dh.Common .元数据.dll

所以人们会认为这也能成功:

Add-Type -AssemblyName
"E:\Workspaces\RTE\dh.PSP.Common\Mainline\Source\dh.Common.MetaData\bin\dh.Common.Metadata.dll"
Run Code Online (Sandbox Code Playgroud)

但不是:

Add-Type:无法加载文件或程序集“E:\Workspaces\RTE\dh.PSP.Common\Mainline\Source\dh.Common.MetaData\bin\dh.Common.Metadata.dll”或其依赖项之一。给定的程序集名称或代码库无效。(HRESULT 异常:0x80131047)

我很困惑为什么一种方法有效而另一种方法无效。有任何想法吗?

小智 5

Add-Type 的参数-assemblyname需要完整或部分程序集名称。尝试使用-path替代。