如果在同一个 AppDomain 中加载了多个版本,WPF 无法选择正确的 DLL
Posted
技术标签:
【中文标题】如果在同一个 AppDomain 中加载了多个版本,WPF 无法选择正确的 DLL【英文标题】:WPF unable to choose right DLL if several versions are loaded within same AppDomain 【发布时间】:2014-11-06 15:36:57 【问题描述】:我们正在开发插件,以添加到一个巨大而出色的软件中。我们经常重复使用相同的 WPF 控件,因此我们将它们打包并为每个控件创建单独的程序集。
有时,我们需要在同一个软件实例中加载 2 个不同的插件。此时,如果 2 个插件使用相同的可重用控件但具有不同的 DLL 版本,WPF 似乎无法选择正确的一个。两个 DLL 均已正确加载(使用 Process Explorer 查看)。
我们已经尝试过的:
绑定重定向 程序集重定向 覆盖的程序集解析是否有任何解决方案向 WPF 指示它需要为 XAML 中请求的命名空间选择同一个 DLL 的哪个版本?我们能否以某种方式强制使用最新的(这对我们有用)?
【问题讨论】:
【参考方案1】:看看我的 SharpDevelop 提交:https://github.com/icsharpcode/SharpDevelop/commit/b3ea4a0efb7e3b8e083f8be40ea6f7e03ff44604
我通过使用自定义“InitializComponent”调用解决了这个问题! (“SpecialInitializeComponent”)并使用特殊合并的 ResourceDictionarys:VersionedAssemblyResourceDictionary!希望对你有帮助!
【讨论】:
我会在下个月测试它并尽快返回结果。以上是关于如果在同一个 AppDomain 中加载了多个版本,WPF 无法选择正确的 DLL的主要内容,如果未能解决你的问题,请参考以下文章
ApplicationManager.CreateObject 无法在新的 AppDomain 中加载程序集
.Net 同一个程序集的两个版本在一个 AppDomain 中加载时是不是存在潜在问题?