如何提供后备程序集而不是无法加载的程序集?

Kir*_*kov 7 .net c# reflection assembly.load assembly-resolution

在运行时,如果引用的程序集无法加载,例如"强名称验证失败"(因为它是经过测试签名的),是否有办法从另一个实际签名的路径提供替换程序集?

我尝试订阅AppDomain.CurrentDomain.AssemblyResolve,但它没有被触发,因为"坏"程序集技术上存在,它只是无法加载.

在无法加载程序集时,是否存在提供回退程序集的通用方法?

Aar*_*her 1

我认为您只需调用 assembly.LoadFrom 即可加载您选择的程序集,几乎不需要安全检查。我们在应用程序开始时经常使用它,以便我们可以更好地处理其他程序集版本更改。

另请查看Assembly.LoadFrom Method (String, Evidence, Byte[], AssemblyHashAlgorithm) 看起来您可以控制传入哈希以及哈希算法。