ASP.net资源文件发生了一些奇怪的事

问题描述:

今天发生了一些奇怪的事情。ASP.net资源文件发生了一些奇怪的事

我正在使用全局资源的多语言应用程序。

我有几个文件,每种语言一个。即companies.es.resx,companies.en.resx等 没有什么特别的或不同于任何其他普通的多语言应用程序。

今天,应用程序失败,我追查问题是HttpContext.GetGlobalResourceObject没有找到资源文件。

我抓了一会儿脑后,记得昨天在关闭Visual Studio之前,我删除了一个垃圾资源文件。这个文件没有使用,实际上它是空的。

只是为了“你永远不知道”我创建了一个新的空白资源文件,并且Walla!一切都开始再次完美。

与这个文件唯一的区别是它的名字没有像test.resx这样的语言。 我不明白,它太奇怪了。

另一个有趣的事情是,当我尝试使用“资源”访问资源时,测试是我获得的唯一资源。

任何想法发生了什么?

我使用MVC 3的visual studio 2010.

谢谢! Edgar

使用资源文件进行多语言项目时,需要使用其他语言文件(如companies.es.resxcompanies.fr.resx)的默认资源文件(没有任何语言扩展名,如companies.resx)。

原因:当没有文件存在时,与当前文化匹配,默认文件被.net使用。例如,你有两个基于语言文件

  1. .fr.resx法国
  2. .es.resx为Espanish例如

如果当前用户的语言比这些例如Arabic其他则默认的资源文件会用过的。即.resx,没有任何特定的语言扩展。

+0

谢谢!这很有道理!现在我明白了什么是没有意义的错误消息的意思! – epaulk 2011-03-28 06:41:55

+0

@epaulk,建议您必须包含默认的资源文件'resx',并且很有可能您的本地化的'.es.resx'文件的密钥少于默认的'.resx'文件 – 2011-03-28 06:49:54

我在VS2010中也有资源问题。尝试引用资源表中的现有资源之后,Visual Studio崩溃了。它甚至没有让我纠正错误的引用,因为它一直在崩溃。 我通过使用常规文本编辑器删除文件中的错误行,然后再次运行VS,解决了此问题。 看来,VS2010有一些资源问题。