反射和强大的命名组件

时间:2010-12-03 04:59:36

标签: c# .net system.reflection

  1. 我创建了一个测试项目,其输出将是强大的命名程序集。我在'project - >中指定了SNK文件名。属性 - >签署'部分,以便装配强大命名。 我添加了未签名或强名称的程序集的引用。我期待我的项目根本不会构建,因为它引用了未签名的程序集。但是,它构建了,我也可以在GAC中安装组件!为什么会这样? (我正在使用.NEt 4.0,它是gacutil.exe) 注意:我确保所引用的程序集名称不强。

  2. 我可以编程方式加载我的程序中的'unsigned'(即非强名称)程序集,其输出将是强名为assembly吗?如果是,为什么在另一方面允许这样做时,.NET不允许添加对未签名程序集的引用?

  3. 如果我在GAC中有多个版本的同一个程序集。在我的配置文件中,如果只指定程序集的名称,将从GAC加载哪个版本?它会是每次都是最新版本吗?哪个API有用?我在Assembly类中找到了许多标记为“已弃用”的方法。

2 个答案:

答案 0 :(得分:1)

您可以从已签名的程序集中引用VS.Net中的未签名程序集。但是如果你从签名到无符号调用任何东西,那么构建将失败。

答案 1 :(得分:0)

  1. 引用无符号程序集的签名程序集没有问题。它可以完成,签名的程序集可以进行GAC。

  2. 是的,你可以加载。

  3. 如何通过名称指定程序集?只有一个API LoadWithPartialName,并且由于许多原因而被弃用。您需要版本,区域性和公钥令牌来唯一标识程序集。