无法在全局程序集缓存中安装修改后的程序集

时间:2019-01-04 09:06:00

标签: .net-assembly dnspy

使用dnSpy assembly editor修改了受版权保护的IBM程序集(DLL)。我修复了源代码中的一个错误。将代码编译回DLL后,我尝试将其安装到GAC中。

但是在此期间,InstallAssembly引发了以下错误:

InstallAssembly failed with error -2146234299

有人知道这意味着什么吗?感谢您的帮助!

编辑

docs.microsoft.com上,我看到-2146234299的意思是FusionErrorSignatureCheckFailed。因此,我无法修改DLL吗?

2 个答案:

答案 0 :(得分:2)

很高兴您不能执行此操作。这正是确切的意图:

  

在全局程序集缓存中部署的程序集必须具有强名称。将程序集添加到全局程序集缓存后,将对组成程序集的所有文件执行完整性检查。 高速缓存执行这些完整性检查,以确保程序集未被篡改,例如,当文件已更改但清单未反映出更改时。

来源:Global Assembly Cache

答案 1 :(得分:0)

如果修改部件,则其签名将不再有效。

您将不得不为其创建一个新的签名,但是您将无法执行此操作,因为您无权访问IBM创建原始签名时使用的私钥。

所以我怕你不走运。