【发布时间】:2014-12-10 23:38:42
【问题描述】:
我在 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
结果:
GAC 版本位置
--- -------- -------- 错误 v4.0.30319
E:\Workspaces\RTE\dh.PSP.Common\Mainline\Source\dh.Common.MetaData\bin\dh.Common.Metadata.dll
所以人们会认为这也会成功:
Add-Type -AssemblyName
"E:\Workspaces\RTE\dh.PSP.Common\Mainline\Source\dh.Common.MetaData\bin\dh.Common.Metadata.dll"
但没有:
Add-Type : 无法加载文件或程序集 'E:\Workspaces\RTE\dh.PSP.Common\Mainline\Source\dh.Common.MetaData\bin\dh.Common.Metadata.dll' 或其依赖项之一。给定的程序集名称或代码库是 无效的。 (HRESULT 异常:0x80131047)
我很困惑为什么一种方法可行而另一种方法不可行。有什么想法吗?
【问题讨论】:
-
您看到
[Reflection.Assembly]::LoadFrom()或[Reflection.Assembly]::Load()的行为是否相同?我的印象是LoadFile()不是专门用于使用的,因为它允许您加载具有相同身份的多个文件。
标签: .net powershell