我创建了一个App_GlobalResources
文件夹,并为ASP Net网站中的相应国家/地区添加了相关的resx文件。
然后我在文件中添加一个键和值。根据需要在网站上显示所有内容。
我现在正尝试从类库中检索此resx文件的值,主要使用以下代码
ResourceManager lang = new ResourceManager("Resource.en-AU", Assembly.Load("App_GlobalResources"));
string value = lang.GetString(Key);
return value;
但是代码崩溃(第二行)并带有错误
其他信息:找不到适合指定文化或中性文化的资源。确保" Resource.en-AU.resources"被正确嵌入或链接到汇编" App_GlobalResources.ufgcy-ty"在编译时,或者所有所需的附属程序集都是可加载和完全签名的。
所以我尝试了
ResourceManager myManager = new ResourceManager(typeof("NOTHING AVAILABLE HERE")); // Seems like its expecting a resource file but since its a class library i cant do this
string myString = myManager.GetString("StringKey");
这让我相信我需要另一种方法从类库中的country resx文件中检索值,但是没有看到如何执行此操作的任何示例或者我需要将现有资源文件从网站移动到类库,然后每次我做一个更改,然后复制到网站,但我不知道这是否是正确的方法?
答案 0 :(得分:2)
试试这样:
ResourceManager resourceManager =
new ResourceManager("Resources.xxx", Assembly.Load("App_GlobalResources"));
string myString = resourceManager.GetString("StringKey");
其中xxx
是您的资源文件的名称,没有.resx
扩展名且没有文化名称(在您的情况下,名称应为Resource
(不含.en-au
)。< / p>
ResourceManager将尝试为当前区域性加载指定的资源文件,具体取决于CurrentUICulture
。如果您的服务器设置为英语(澳大利亚)语言/区域设置/文化,它会尝试加载Resource.en-au
如果您的文化设置为,让我们说,罗马尼亚语,它将尝试查找{{ 1}}。如果找不到这样的文件,它将回退到默认文件,即没有文化名称的文件。
或者,您可以加载如下资源:
Resource.ro
[Resources namespace].[Resource file name].ResourceManager.GetString("StringKey")
是资源文件的命名空间(默认Resources namespace
,但您可以在资源文件的Resources
文件中看到真正的命名空间),.Designer.cs
是resource file name
文件的文件名,没有扩展名或文化。
所以,你可以尝试这样:
.resx