自从将我们的产品转换为 .NET 4.0 并使用更新的代码访问安全模型后,我们遇到了一个问题。基本上,我们有组件库可能会或可能不会安装到机器上的 GAC。
如果有人使用这些库的默认部分信任设置创建了 XBAP,并且最终用户安装了 XBAP(在安装过程中部署了库),那么如果我们的库还没有在 GAC 中,它就可以正常工作。
如果它们在 GAC 中,XBAP 将在运行时失败并出现安全异常。我相信问题是由于这个:http: //msdn.microsoft.com/en-us/library/aa970906.aspx
当托管程序集安装到全局程序集缓存 (GAC) 中时,它们会变得完全受信任,因为用户必须提供明确的权限才能安装它们。因为它们是完全受信任的,所以只有完全受信任的托管客户端应用程序才能使用它们。
似乎自从它们从 GAC 中撤出后,即使它们与 XBAP 部署的 .dll 完全相同,它们的安全性也得到了更高的提升。但在那种情况下,一切都会破裂。
除了将 AllowPartiallyTrustedCallersAttribute 添加到所有库之外,有没有办法解决这个问题?
或者有没有办法阻止 XBAP 在 GAC 中查找程序集并仅使用它部署时使用的引用的确切副本?
提前感谢您的任何帮助。