【发布时间】:2011-07-08 20:40:48
【问题描述】:
我正在为现有的 Win32 MFC 客户端应用程序创建 WPF 扩展。在位于我的 WPF 类库中的 UserControl 中,我正在合并库,如下所示:
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="MyResourceDLL;Component/dictionaries/styles.xaml"/>
</ResourceDictionary.MergedDictionaries>
我也试过了
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="pack://application:,,,/MyResourceDLL;Component/dictionaries/styles.xaml"/>
</ResourceDictionary.MergedDictionaries>
在任何一种情况下,我都会收到以下 XamlParseException:
System.Windows.Markup.XamlParseException 发生了
Message="MyResourceDLL;组件/字典/styles.xaml' 值不能分配给属性 对象的“来源” 'System.Windows.ResourceDictionary'。 找不到资源 'ems.wpf.resources;component/dictionaries/styles.xaml'。 对象错误 'System.Windows.ResourceDictionary' 在 标记文件 'SARMaster.Maryln.EphemerisLib;component/getephemeriscontrol.xaml' 第 9 行位置 37。”
我有什么方法可以加载主项目未引用的相关 DLL?
【问题讨论】:
-
不明白。为什么不引用包含资源字典的程序集?我认为你需要进一步解释你的情况。
-
你试过this吗?
-
Kent,WPF 类库正在引用包含资源字典的程序集。我需要告诉托管 MFC 应用程序将所有托管 DLL 复制到其输出目录或其他内容。与 WPF 宿主不同,将此程序集引用添加到 MFC 项目不会将其复制到其输出目录。如果我自己手动复制文件,一切都很好。
-
dowhilefor,你提供的链接很有帮助,谢谢。我认为这主要是构建路径的问题。如果我把我的程序集放到 MFC 主机的输出目录中,一切都很好。
-
... 或者它可能是被引用的程序集仅在 XAML 中使用,而不是在入口项目中没有引用的代码中,它没有被运行时加载。