在运行时加载“松散”的本地化资源?

时间:2013-03-07 20:29:59

标签: c# wpf localization internationalization

我有一个Web服务,它为我提供了生成的.resx(仅限XML),然后我将其转换为二进制文件.resources。我目前正使用al.exe生成一个汇编文件。以下是我的论点:

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

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

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

1 个答案:

答案 0 :(得分:4)

您的程序集是一个附属程序集。来自MSDN

  

根据定义,附属程序集只能包含资源。他们   不能包含任何可执行代码。

如果要访问此程序集的资源 - 类似的代码应该可以工作:

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

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