c# - 在运行时加载 "loose"本地化资源?

标签 c# wpf localization internationalization

我有一个网络服务,它为我提供生成的 .resx(仅限 XML),然后我将其转换为二进制 .resources 文件。我目前正在使用 al.exe 生成一个程序集文件。这是我的论点:

/t:lib /c:{culture} /embed:"{.resource input}" /out:"{.dll output}"

通过 Assembly.LoadFrom(file) 加载这个程序集工作正常,但我相信我的程序集没有正确生成。它没有类型、命名空间或可调用的方法,因此显然没有 ResourceManager

本质上,我只是想知道是否有可能生成、加载和利用没有我的项目在编译时知道的类或命名空间的资源。谢谢。

最佳答案

您的程序集是一个卫星程序集。来自 MSDN :

By definition, satellite assemblies can only contain resources. They cannot contain any executable code.

如果你想访问这个程序集的资源——类似的代码应该可以工作:

ResourceManager rm = new ResourceManager(
    "ResourceTest.Properties.Resources", 
     Assembly.LoadAssembly(file));
MessageBox.Show(rm.GetString("helloWorldString"));

此外,来自 MSDN 的文章:Walkthrough: Loading Resources from a Satellite Assembly显示了如何从附属程序集加载资源字符串的另一种方法。

关于c# - 在运行时加载 "loose"本地化资源?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15281109/

相关文章:

iOS Facebook SDK 错误语言

c# - 在文档查看器中突出显示所有命中

wpf - 数据绑定(bind)是将 View 连接到模型的好方法吗

c# - ComboBox 与 ObservableCollection 绑定(bind)

windows - PL/SQL Developer 不显示 "ő"字符

javascript - 如何更改浏览器接受语言

c# - 使用列表的 ASP.Net 随机生成器

c# - object[] as SomeClass[] 始终为 null

c# - 代表和事件

c# - 如何使用 DependencyProperty 设置 TextBox 的绑定(bind)