我正在.NET 3.5 中使用 WPF 构建一个 GUI 应用程序框架。
我的主应用程序几乎没有依赖项。它的工作之一是加载外部程序集(插件)并从它们请求窗口和控件。
那部分工作正常。
当插件使用 WPF 框架中未定义的控件时会出现问题。例如,我有一个引用 WPF 工具包并使用DatePicker
. 当主应用程序读取 XAML 文件并看到DatePicker
时,它会抛出一个XAMLParseException
,说明
找不到类型“Microsoft.Windows.Controls.DatePicker”。编译时使用的程序集可能与加载时使用的程序集不同,并且类型丢失。
对我来说很明显为什么会抛出这个异常,并且在主应用程序中添加对 WPF Toolkit 的引用可以解决问题。但是我无法在主应用程序中为插件使用的每个控件添加引用,因为我不知道这些控件可能是什么。
我还要补充一点,主应用程序使用Assembly.LoadFrom
.
现在的问题:
我是否需要让插件将它们的依赖项复制到主应用程序的目录中,然后再加载它们?我还有哪些其他选择?.NET 4 中是否以某种方式解决了这个问题?