如何在ASP.NET MVC中使用已编译的全局资源

Rob*_*ool 14 asp.net-mvc localization embedded-resource

我想将App_GlobalResources/Strings.resx编译到我的程序集中(并最终使用Strings.es.resx,Strings.fr.resx等的附属程序集)但是一旦发布应用程序就会出现以下错误:

"无法加载文件或程序集'App_GlobalResources'或其依赖项之一.系统无法找到指定的文件."

重现步骤:

  1. 创建一个新的ASP.NET MVC项目.
  2. 添加App_GlobalResources文件夹和Strings.resx文件.
  3. 将文件的构建操作设置为"嵌入式资源"
  4. 将字符串添加到Strings.resx并在其中使用HomeController.Index(),例如ViewData["Message"] = Strings.MyTest
  5. F5调试,工作正常.
  6. 发布到IIS并(由于Strings.resx被排除在发布之外),您将在发布的站点中收到上述错误.

ASP.NET MVC项目可以使用编译到dll中的字符串资源,如果是这样,我做错了什么?


更新:这是我在Reflector中看到的: 字符串资源

那么为什么ResourceManager找不到它们呢?它不应该默认回退到主程序集吗?

w0r*_*ven 23

这是一个很好的起点http://odetocode.com/Blogs/scott/archive/2009/07/16/resource-files-and-asp-net-mvc-projects.aspx

我像你提到的那样设置了一个项目,当我部署到IIS6时,我得到了完全相同的错误.更改Custom ToolPublicResXFileCodeGeneratorCustom Tool NamespaceResources每斯科特的建议清除它的权利了.

我也遵循Scott在消除App_GlobalResources方面的领先优势,但我让它工作得很好.这可能是个人偏好的问题.