【发布时间】:2020-02-11 15:48:02
【问题描述】:
我有一个非托管应用程序,它的某些用户界面使用 WPF 程序集。
最初我遇到了以下异常:
System.IO.FileNotFoundException 未处理消息:无法加载 文件或程序集 'PresentationFramework ...
(与Changed framework version results in: Could not load file or assembly PresentationFramework?的原因不同)。
PresentationFramework 是我的程序集的引用。
我已通过添加一行 C# 代码来解决此问题,该代码似乎强制或欺骗编译器/运行时加载 DLL:
// Refers to an arbitrary enum in PresentationFramework.Classic.dll
var dummy = Microsoft.Windows.Themes.ClassicBorderStyle.None;
然后我在运行时没有异常。
否则,对该 DLL 中任何内容的唯一引用是在 XAML 中。具体来说:
<ResourceDictionary Source="pack://application:,,,/PresentationFramework.Classic;component/themes/Classic.xaml"/>
但显然这个 XAML 引用不足以让 DLL 在运行时正确加载。
这个“虚拟”解决方案是可以的,因为它确实有效,但我不明白为什么这是必要的,这让我觉得我错过了更重要的事情。
这是一个正确的解决方法吗?首先这是必要的原因是什么?
【问题讨论】: