0

我的 Assembly.LoadFrom(path, hashValue, hashAlgorithm) 不工作,因“定位程序集与程序集引用不匹配”异常而失败。

这是在powershell 2中。

我已经通过首先使用 Load(bytes) 加载程序集来确定哈希值,这工作正常。使用该结果,我从证据中访问 MD5 哈希值,如下所示:

$a= [System.Reflection.Assembly]::Load($bytes)  
$h=$a.Evidence|? {$_ -is [System.Security.Policy.Hash]}  
$md5= $h.MD5  

我将哈希值带入另一个 powershell 会话,所以我有一个干净的 AppDomain,并尝试这样做:

$md5=[byte[]] (values that I determined)  
[System.Reflection.Assembly]::LoadFrom("pathToMyAssembly", $md5, "MD5")  

这就是失败的原因。有任何想法吗?

4

1 回答 1

1

您调用的LoadFrom方法仅从 .NET 4 开始可用。看到 Powershell 仍然在 .NET 3.5 上运行,调用它是行不通的。

也许您可以只传递null给第二个参数。例如:

[System.Reflection.Assembly]::LoadFrom("pathToMyAssembly", null, $md5, "MD5")  

根据 MSDN,上面的方法现在已经过时了,但是对于 3.5 你别无选择:)

于 2012-05-17T06:27:22.077 回答