我有三个 .NET 4.0 第三方程序集:
Assembly.One是无符号的并引用有符号Assembly.Two和无符号Assembly.Three。Assembly.Two引用一个已签名Assembly.Three的.
我已经使用反射器验证了上述内容。
我得到了一个 unsigned Assembly.One,signedAssembly.Two和unsigned Assembly.Three。
我预计这会在部署时崩溃,因为签名Assembly.Two肯定无法加载未签名Assembly.Three,因为它专门从参考中寻找签名版本?然而,令我惊讶的是它有效。
Assembly.Two在它的清单中有对它的引用,Assembly.Three所以它必须使用它,否则编译器会把它去掉?我检查Assembly.Three了服务器上没有签名版本,并且使用 FUSLOGVW 它确实在加载未签名版本。
FUSLOGVW 中有两个条目用于加载 unsigned Assembly.Three,其中一个用于 (Unknown) 的调用程序集,显示如下。
部分指定的程序集绑定从应用程序目录成功。需要重新申请保单
是否存在潜在的“责任链”(由于缺乏更好的描述)允许我不知道这一点,因为发起者Assembly.One引用了 unsigned Assembly.Three?