我想将 App_GlobalResources / Strings.resx 编译到我的程序集中(并最终使用 Strings.es.resx,Strings.fr.resx 等的附属程序集。 )但应用程序发布后会出现以下错误:
“无法加载文件或程序集'App_GlobalResources'或其依赖项之一。系统无法找到指定的文件。”
重现步骤:
HomeController.Index()
中使用,例如ViewData["Message"] = Strings.MyTest
ASP.NET MVC项目可以使用编译到dll中的字符串资源吗?如果是这样,我做错了什么?
那么为什么ResourceManager找不到它们呢?默认情况下不应该fallback to the main assembly吗?
答案 0 :(得分:23)
这是一个很好的起点http://odetocode.com/Blogs/scott/archive/2009/07/16/resource-files-and-asp-net-mvc-projects.aspx
我设置了一个项目就像你提到的那样,当我部署到IIS6时得到了完全相同的错误。根据斯科特的建议,将Custom Tool
更改为PublicResXFileCodeGenerator
并将Custom Tool Namespace
更改为Resources
即可将其清除。
我也遵循Scott在消除App_GlobalResources方面的领先优势,但我让它工作得很好。这可能是个人偏好的问题。
答案 1 :(得分:0)
可能还有一件事需要了解PublicResXFileCodeGenerator - 它不适用于文件名中有多个点的文件(参见http://social.msdn.microsoft.com/Forums/ru-RU/9412f049-acd8-4a77-b73a-f3810df18376/naming-resources-files-issue-aspnet-mvc-3?forum=dlr)。所以Strings.es.resx,Strings.fr.resx等的代码隐藏仍然是空的。简单的解决方案是重命名文件。