【发布时间】:2012-09-24 02:37:12
【问题描述】:
我有一个 WPF 程序集,我在本机代码的互操作场景中使用 LoadFrom 加载上下文,如下所示:
AppDomain.CreateInstanceFrom("c:\mydlls\mywpfstuff.dll", "myclass")
请注意,mydlls 与可执行文件所在的文件夹不同。这适用于我也加载的常规非 ui .NET dll,但是当我尝试执行此操作时出现错误。我附加了 AppDomain.CurrentDomain.AssemblyResolve 事件处理程序并获取了一个无法加载的事件。 ResolveEventArgs 中的名称为“mywpfstuff.resources”,RequestingAssembly 为空。我没有名为“mywpfstuff.resources”的文件,并且无法弄清楚如何解决自己的问题。
触发错误的代码行是 InitializeComponent();调用我的主用户控件构造函数。
在我看来,内部 XAML(BAML?)机制试图加载一些资源,但使用标准的 Load 上下文而不是 LoadFrom 上下文。
有没有办法解决这个问题,最好是让 WPF 使用 LoadFrom 上下文,或者如果这不可能,如何手动解决程序集?
【问题讨论】:
-
您在
mywpfstuff项目中(可能在Properties文件夹中)有名称为Resources.resx的文件吗?如果有,Build Action有什么? -
我不确定这很重要 - 您会看到在使用 AssemblyResolve 时尝试加载许多 dll(根据我的经验)。你对你的项目还有什么要补充的吗?“myclass”到底是什么?
-
当请求 mywpfstuff.resources 时,您是否尝试过从事件处理程序返回 mywpfstuff 程序集?
标签: c# wpf xaml assembly-loading