3

自从将我们的产品转换为 .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 中查找程序集并仅使用它部署时使用的引用的确切副本?

提前感谢您的任何帮助。

4

1 回答 1

0

在 Visual Studio 的解决方案资源管理器中,单击参考并尝试将属性“SpecificVersion”设置为 true。它应该只查看指定的路径和引用时指定的版本,而不是在 GAC 中寻找最新版本。

查看.net 参考具体版本是真是假?

请注意,如果您添加参考的新版本,则必须删除当前参考,它不会自动替换它。

于 2012-06-12T20:06:00.873 回答