我试图构建一个工具,在运行时将程序集作为byte []加载(Assemly.Load(byte []) 只要我不在加载的程序集中打开WPF表单,它就没有任何问题。 然后我的程序集解决事件启动并要求一个名为[我的项目名称] .resources的文件,我真的不明白如何生成这个文件,谷歌也没有。
这是一些奇怪的错误吗?我现在是否需要使用Winforms才能使用WPF?
谢谢!
/埃里克
答案 0 :(得分:1)
根据Microsoft AppDomain.AssemblyResolve Event文档:
从.NET Framework 4开始,ResolveEventHandler事件就是 为所有程序集引发,包括资源程序集。
此外,Microsoft ResourceManager Class文档阐明了.resources文件的位置:
ResourceManager类从二进制.resources中检索资源 嵌入在程序集中的文件或独立的.resources文件 文件。如果应用已经本地化并且本地化资源已经存在 部署在附属组件中,它查找特定于文化的 资源,在本地化资源执行时提供资源回退 不存在,并支持资源序列化。
因此,根据程序集是否已本地化,您应该返回包含.resources文件的程序集。对于非本地化的组件,这通常是组件本身;对于本地化程序集,这是包含本地化资源的卫星程序集。
虽然我从未尝试过,但我相信AssemblyResolve事件可能会针对本地化程序集多次提升。每次需要返回包含匹配的本地化.resources文件的卫星程序集时,如果不支持请求的语言环境,则返回NULL。