我的目标:
我们允许将我们的产品与第三方组件(库)集成,这些组件由于许可而未作为我们产品的一部分安装。目前,我们只想加载与第三方组件相关的功能,前提是这些组件安装在客户端计算机上。
目前的解决方案:
我在用着Assembly.ReflectionOnlyLoad
提供第三方程序集的全名,以便在应用程序加载相关功能之前验证第三方组件的安装。这适用于以下场景:
- 库的确切版本已安装到 GAC
- 库的确切版本被复制到应用程序目录/探测路径
Problem:
现在我需要修改解决方案以支持发布者策略(将程序集绑定重定向到新版本)。我刚刚测试了我的代码,看起来像ReflectionOnlyLoad
忽略部署到 GAC 的发布者策略,因此即使正确安装了第三方程序集(具有程序集重定向的新版本),我的机制也不会加载预期的功能。
如果我删除验证(= 每次都会加载功能),应用程序将正确加载第三方程序集的新版本,因此发布者策略可以正常工作,因为功能仍然依赖于旧版本进行编译。
使用版本控制和程序集重定向时,如何验证 GAC 和探测路径中程序集是否存在?
看来你可以打电话应用程序域.应用策略 http://msdn.microsoft.com/en-us/library/system.appdomain.applypolicy.aspx将策略应用于程序集名称。然后你可以打电话ReflectionOnlyLoad()
关于返回的名称。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)