【发布时间】:2012-06-26 05:29:44
【问题描述】:
我有这个函数,它可以很好地从这个名为 OkayMessages 的特定资源文件中获取翻译后的值。
public static string GetResourceString(string resourceKey){
ResourceManager resourceManager = Resources.OkayMessages.ResourceManager;
return resourceManager.GetString(resourceKey);
}
但我有超过 1 个资源文件,我希望这个函数也能从这些文件中获取值。只是,我在动态/以编程方式选择正确的资源(管理器)时遇到了问题。 我尝试使用下面的代码,以及一些变体,但我总是得到一个错误。
public static string GetResourceString(string resourceFile, string resourceKey){
ResourceManager resourceManager = new System.Resources.ResourceManager("Resources." + resourceFile, Assembly.GetExecutingAssembly());
return resourceManager.GetString(resourceKey);
}
我经常遇到的错误是:找不到任何适合指定文化或中立文化的资源。确保“Resources.OkayMessages.resources”被正确嵌入或链接到程序集中..
更新:我正在为我的资源文件使用 \App_GlobalResources\ 文件夹,看来这就是问题所在。当我将资源文件放在项目的根目录中时,我可以毫无问题地初始化 ResourceManager。
【问题讨论】:
-
所以这里的根本问题是 App_GlobalResources 文件夹中的资源被编译到它们自己的程序集 (App_GlobalResources) 中。 GetGlobalResourceObject 方法知道使用正确的程序集。
标签: asp.net .net resx resource-files