显示引用了其他DLL的DLL窗口时出错

本文关键字:DLL 窗口 出错 显示 其他 引用 | 更新日期: 2023-09-27 18:30:00

我试图加载一个DLL中的窗口,但该窗口包含对另一个DLL(WPF Toolkit)中自定义WPF控件的引用,问题是在呈现窗口实例System.Windows.Markup.XamlParseException时,显示以下消息:

"您无法加载文件或程序集'Xceed.Wpf.Toolkit,PublicKeyToken=3e4669d2f30244f'或其依赖项之一。系统找不到指定的文件。"

如果我从主项目中引用了WPF工具包,问题就解决了,但我需要在不引用WPF工具包的情况下使用它。

显示引用了其他DLL的DLL窗口时出错

我需要在不引用WPF工具包的情况下进行此操作。

为什么?请详细说明这一要求。


的确,只要您的程序本身不直接引用WPF Toolkit程序集的成员,那么在不引用WPF工具箱程序集的情况下编译是合法的。但是您使用的DLL本身在运行时需要WPF Toolkit程序集。因此,无论程序的程序集是否引用WPF Toolkit程序集,都必须执行操作,以确保运行时可以使用您正在使用的DLL加载WPF工具箱程序集。

最简单的方法之一是添加WPF Toolkit程序集作为引用。你说你不想这么做,但没有解释为什么。另一种方法是将WPF Toolkit DLL添加为项目项(例如"添加现有项…"、"添加为链接"),并将项类型设置为"内容"、"更新时复制"或"始终复制"。更复杂的方法是将其添加到GAC中。

就这一点而言,如果您愿意,您可以手动将DLL复制到项目的输出目录中;重要的是,WPF工具包的DLL是存在的,这样当您引用的DLL需要它时,它就可以由.NET加载。