【发布时间】:2012-07-31 22:35:17
【问题描述】:
我有三个 .NET 4.0 第三方程序集:
Assembly.One未签名并引用已签名的Assembly.Two和未签名的Assembly.Three。Assembly.Two引用了一个签名Assembly.Three。
我已经使用反射器验证了上述内容。
我收到了未签名的Assembly.One、已签名的Assembly.Two 和未签名 Assembly.Three。
我预计这会在部署时失败,因为签名的Assembly.Two 肯定无法加载未签名的Assembly.Three,因为它专门从参考中寻找签名版本?然而,令我惊讶的是它确实有效。
Assembly.Two 在其清单中有对Assembly.Three 的引用,因此它必须使用它,否则编译器会将其剥离?我检查了服务器上没有Assembly.Three 的签名版本,并且使用 FUSLOGVW 它确实在加载未签名版本。
FUSLOGVW 中有两个条目用于加载未签名的Assembly.Three,其中一个用于 (Unknown) 的调用程序集,显示如下。
应用程序成功绑定了部分指定的程序集 目录。需要重新申请政策
是否存在潜在的“责任链”(由于缺乏更好的描述),因为原始 Assembly.One 引用了未签名的 Assembly.Three,所以我不知道这一点?
【问题讨论】:
标签: .net assemblies