在运行时加载程序集时,WPF表单的.resource文件?

时间:2014-12-17 10:35:00

标签: c# .net wpf

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

这是一些奇怪的错误吗?我现在是否需要使用Winforms才能使用WPF?

谢谢!

/埃里克

1 个答案:

答案 0 :(得分:1)

根据Microsoft AppDomain.AssemblyResolve Event文档:

  

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

此外,Microsoft ResourceManager Class文档阐明了.resources文件的位置:

  

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

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

虽然我从未尝试过,但我相信AssemblyResolve事件可能会针对本地化程序集多次提升。每次需要返回包含匹配的本地化.resources文件的卫星程序集时,如果不支持请求的语言环境,则返回NULL。