在运行时加载程序集时 WPF 窗体的 .resource 文件

本文关键字:窗体 resource 文件 WPF 运行时 加载 程序集 | 更新日期: 2023-09-27 18:34:24

我试图构建一个工具,在运行时将程序集加载为byte[](Assemly.Load(byte[](只要我不在加载的程序集中打开 WPF 窗体,它就可以毫无问题地工作。然后我的程序集解析事件触发并要求一个名为 [我的项目名称].resources 的文件,我真的不明白如何生成这个文件,谷歌也没有。

这是某种奇怪的错误吗?现在我是否必须重新使用 Winforms,因为我刚刚获得了 WPF ?

谢谢!

/埃里克

在运行时加载程序集时 WPF 窗体的 .resource 文件

根据 AppDomain.AssemblyResolve 事件文档Microsoft:

从 .NET Framework 4 开始,ResolveEventHandler 事件是 为所有程序集(包括资源程序集(引发。

此外,Microsoft ResourceManager 类文档阐明了在哪里可以找到 .resources 文件:

类从二进制 .resources 中检索资源 嵌入在程序集中或来自独立 .resources 的文件 文件。如果应用已本地化,并且资源已本地化 部署在附属程序集中,它查找特定于区域性 资源,在本地化资源执行时提供资源回退 不存在,并且支持资源序列化。

因此,根据程序集是否已本地化,应返回包含 .resources 文件的程序集。 对于非本地化程序集,这是(通常(程序集本身;对于本地化程序集,这是包含本地化资源的卫星组件。

虽然我从未尝试过,但我相信对于本地化程序集,可能会多次引发 AssemblyResolve 事件。 每次都需要返回包含匹配的本地化 .resources 文件的卫星程序集,如果请求的区域设置不受支持,则返回 NULL。