.NET中完全合格的类型分辨率

时间:2010-07-13 15:03:54

标签: .net sharepoint assembly-resolution fusion

简单问题(出现在 SharePoint 2010 中,但这并不是真的相关)。

如何:

<add name="LdapMembershipProvider" type="Microsoft.Office.Server.Security.LdapMembershipProvider, Microsoft.Office.Server, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" 

...解析实际类型( LdapMembershipProvider )仅在 Microsoft.Office.Server.UserProfiles 程序集中找到,而不是在 Microsoft中找到。 Office.Server 程序集?

两者都是GAC注册的。

Fusion 是否会探测其他程序集,即使指定了完全限定类型?

2 个答案:

答案 0 :(得分:1)

装配绑定重定向?

MSDN - Assembly Binding Redirection

  

您可以重定向装配绑定   引用另一个版本的   通过使用中的条目进行汇编   应用程序或机器配置   文件。您可以将引用重定向到   .NET Framework程序集,第三方   装配件或您自己的装配件   应用

答案 1 :(得分:0)

公钥令牌是否可能实际指向正确的程序集并忽略程序集名称?

我正在阅读以下MSDN参考:

http://msdn.microsoft.com/en-us/library/system.reflection.assemblyname.aspx

听起来可疑的摘录:

  

可以指定公钥   和一个不一致的KeyPair   值。这可能很有用   开发者场景。在这种情况下,   使用GetPublicKey检索的公钥   指定正确的公钥,   KeyPair指定公众   和期间使用的私钥   发展。 运行时检测到   KeyPair和。之间的不匹配   公钥,它在里面查找   注册表匹配的正确密钥   公钥。

不确定。一种立即浮现在脑海中的行为,但我无法确认的是,如果它未能在程序集中找到 中指定的类型,它会尝试通过项目引用找到它。